// Generated .IDL file (by the OLE/COM Object Viewer)
//
// typelib filename: XRawfile2.dll

[
  uuid(5FE970A2-29C3-11D3-811D-00104B304896),
  version(1.0),
  helpstring("XRawfile2 1.0 Type Library"),
  custom(DE77BA64-517C-11D1-A2DA-0000F8773CE9, 83951780),
  custom(DE77BA63-517C-11D1-A2DA-0000F8773CE9, 1187219982)

]
library XRAWFILE2Lib
{
    // TLib :     // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
    importlib("stdole2.tlb");

    // Forward declare all types defined in this typelib
    interface IXRawfile;
    interface IXRawfile2;
    interface IXRawfile3;
    interface IXVirMS;
    interface IXVirUV;

    typedef enum {
        MS_TRAILER_NOT_AVAILABLE = 0xffffffff
    } __MIDL___MIDL_itf_XRawfile2_0000_0001;

    typedef enum {
        MS_SCAN_TYPE_NOT_SPECIFIED = 0xffffffff
    } __MIDL___MIDL_itf_XRawfile2_0000_0002;

    typedef enum {
        MS_MAX_NUM_MASS_RANGES = 50
    } __MIDL___MIDL_itf_XRawfile2_0000_0003;

    typedef enum {
        MS_MAX_MS_ORDER = 10
    } __MIDL___MIDL_itf_XRawfile2_0000_0004;

    typedef enum {
        MS_PacketTypes_PROF_SP_TYPE = 0,
        MS_PacketTypes_LR_SP_TYPE = 1,
        MS_PacketTypes_HR_SP_TYPE = 2,
        MS_PacketTypes_PROF_INDEX_TYPE = 3,
        MS_PacketTypes_COMP_ACC_SP_TYPE = 4,
        MS_PacketTypes_STD_ACC_SP_TYPE = 5,
        MS_PacketTypes_STD_UNCAL_SP_TYPE = 6,
        MS_PacketTypes_ACC_MASS_PROF_SP_TYPE = 7,
        MS_PacketTypes_DG_xAQR_TYPE = 8,
        MS_PacketTypes_DG_xAQR_INDEX_TYPE = 9,
        MS_PacketTypes_DG_xASR_TYPE = 10,
        MS_PacketTypes_DG_xASR_INDEX_TYPE = 11,
        MS_PacketTypes_CHANNEL_UV_TYPE = 12,
        MS_PacketTypes_MS_ANALOG_TYPE = 13,
        MS_PacketTypes_PROF_SP_TYPE2 = 14,
        MS_PacketTypes_LR_SP_TYPE2 = 15,
        MS_PacketTypes_PROF_SP_TYPE3 = 16,
        MS_PacketTypes_LR_SP_TYPE3 = 17
    } MS_PacketTypes;

    typedef enum {
        MS_Negative = 0,
        MS_Positive = 1,
        MS_AnyPolarity = 2
    } MS_Polarity;

    typedef enum {
        MS_Centroid = 0,
        MS_Profile = 1,
        MS_AcceptAnyScanData = 2
    } MS_ScanData;

    typedef enum {
        MS_NotDependent = 0,
        MS_Dependent = 1,
        MS_AcceptAnyDep = 2
    } MS_Dep;

    typedef enum {
        MS_WidebandOff = 0,
        MS_WidebandOn = 1,
        MS_AcceptAnyWideband = 2
    } MS_Wideband;

    typedef enum {
        MS_SourceCIDon = 0,
        MS_SourceCIDoff = 1,
        MS_AcceptAnySourceCID = 2
    } MS_SourceCID;

    typedef enum {
        MS_SourceCIDTypeNoValue = 0,
        MS_SourceCIDTypeSingleValue = 1,
        MS_SourceCIDTypeRamp = 2,
        MS_SourceCIDTypeSIM = 3,
        MS_AcceptAnySourceCIDType = 4
    } MS_SourceCIDType;

    typedef enum {
        MS_ng = 0xfffffffd,
        MS_nl = 0xfffffffe,
        MS_par = 0xffffffff,
        MS_AcceptAnyMSorder = 0,
        MS_ms = 1,
        MS_ms2 = 2,
        MS_ms3 = 3,
        MS_ms4 = 4,
        MS_ms5 = 5,
        MS_ms6 = 6,
        MS_ms7 = 7,
        MS_ms8 = 8,
        MS_ms9 = 9,
        MS_ms10 = 10
    } MS_MSOrder;

    typedef enum {
        MS_Fullsc = 0,
        MS_Zoomsc = 1,
        MS_SIMsc = 2,
        MS_SRMsc = 3,
        MS_CRMsc = 4,
        MS_AcceptAnyScanType = 5,
        MS_Q1MSsc = 6,
        MS_Q3MSsc = 7
    } MS_ScanType;

    typedef enum {
        MS_TurboScanOn = 0,
        MS_TurboScanOff = 1,
        MS_AcceptAnyTurboScan = 2
    } MS_TurboScan;

    typedef enum {
        MS_ElectronImpact = 0,
        MS_ChemicalIonization = 1,
        MS_FastAtomBombardment = 2,
        MS_Electrospray = 3,
        MS_AtmosphericPressureChemicalIonization = 4,
        MS_Nanospray = 5,
        MS_Thermospray = 6,
        MS_FieldDesorption = 7,
        MS_MatrixAssistedLaserDesorptionIonization = 8,
        MS_GlowDischarge = 9,
        MS_AcceptAnyIonizationMode = 10
    } MS_IonizationMode;

    typedef enum {
        MS_CoronaOn = 0,
        MS_CoronaOff = 1,
        MS_AcceptAnyCorona = 2
    } MS_Corona;

    typedef enum {
        MS_DetectorValid = 0,
        MS_AcceptAnyDetector = 1
    } MS_Detector;

    typedef enum {
        MS_PrecursorEnergyValid = 0,
        MS_AcceptAnyPrecursorEnergy = 1
    } MS_PrecursorEnergy;

    typedef struct tagMS_MassRange {

double dLowMass;

double dHighMass;
    } MS_MassRange;

    typedef struct tagMS_ScanEvent {

long bIsValid;

MS_ScanData eScanData;

MS_Polarity ePolarity;

MS_MSOrder eMSOrder;

MS_Dep eDependent;

MS_Wideband eWideband;

long bCustom;

MS_SourceCID eSourceCID;

MS_ScanType eScanType;

MS_TurboScan eTurboScan;

MS_IonizationMode eIonizationMode;

MS_Corona eCorona;

MS_Detector eDetector;

double dDetectorValue;

MS_SourceCIDType eSourceCIDType;

long nlScanTypeIndex;

long nNumMassRanges;

MS_MassRange arrMassRanges[50];

long nNumPrecursorMasses;

double arrPrecursorMasses[10];

double arrPrecursorEnergies[10];

long arrPrecursorEnergiesValid[10];

long nNumSourceFragmentationEnergies;

double arrSourceFragmentationEnergies[50];

long arrSourceFragmentationEnergiesValid[50];
    } MS_ScanEvent;

    typedef struct tagMS_ScanIndex {

unsigned long m_ulDataOffset;

long m_nlTrailerOffset;

long m_nlScanTypeIndex;

int m_nScanNumber;

int m_nPacketType;

int m_nNumberPackets;

double m_dStartTime;

double m_dTIC;

double m_dBasePeakIntensity;

double m_dBasePeakMass;

double m_dLowMass;

double m_dHighMass;
    } MS_ScanIndex;

    typedef struct tagMS_UVScanIndex {

int nPacketType;

int nNumberOfChannels;

double dStartTime;

double dTIC;
    } MS_UVScanIndex;

    typedef struct tagMS_DataPeak {

double intensity;

double position;

single basepeak;

long scan;
    } MS_DataPeak;

    typedef struct tagMS_PrecursorInfo {

double dMonoIsoMZ;

double dIsolationMZ;

long nChargeState;

long nScanNumber;
    } MS_PrecursorInfo;

    [
      odl,
      uuid(5FE970B1-29C3-11D3-811D-00104B304896),
      helpstring("IXRawfile Interface"),
      dual,
      oleautomation
    ]
    interface IXRawfile : IDispatch {
        [id(0x00000001), helpstring("method Open")]
        HRESULT Open(BSTR szFileName);
        [id(0x00000002), helpstring("method Close")]
        HRESULT Close();
        [id(0x00000003), helpstring("method GetFileName")]
        HRESULT GetFileName(BSTR* pbstrFileName);
        [id(0x00000004), helpstring("method GetCreatorID")]
        HRESULT GetCreatorID(BSTR* pbstrCreatorID);
        [id(0x00000005), helpstring("method GetVersionNumber")]
        HRESULT GetVersionNumber(long* pnVersion);
        [id(0x00000006), helpstring("method GetCreationDate")]
        HRESULT GetCreationDate(DATE* pCreationDate);
        [id(0x00000007), helpstring("method IsError")]
        HRESULT IsError(long* pbIsError);
        [id(0x00000008), helpstring("method IsNewFile")]
        HRESULT IsNewFile(long* pbIsNewFile);
        [id(0x00000009), helpstring("method GetErrorCode")]
        HRESULT GetErrorCode(long* pnErrorCode);
        [id(0x0000000a), helpstring("method GetErrorMessage")]
        HRESULT GetErrorMessage(BSTR* pbstrErrorMessage);
        [id(0x0000000b), helpstring("method GetWarningMessage")]
        HRESULT GetWarningMessage(BSTR* pbstrWarningMessage);
        [id(0x0000000c), helpstring("method GetSeqRowNumber")]
        HRESULT GetSeqRowNumber(long* pnSeqRowNumber);
        [id(0x0000000d), helpstring("method GetSeqRowSampleType")]
        HRESULT GetSeqRowSampleType(long* pnSampleType);
        [id(0x0000000e), helpstring("method GetSeqRowDataPath")]
        HRESULT GetSeqRowDataPath(BSTR* pbstrDataPath);
        [id(0x0000000f), helpstring("method GetSeqRowRawFileName")]
        HRESULT GetSeqRowRawFileName(BSTR* pbstrRawFileName);
        [id(0x00000010), helpstring("method GetSeqRowSampleName")]
        HRESULT GetSeqRowSampleName(BSTR* pbstrSampleName);
        [id(0x00000011), helpstring("method GetSeqRowSampleID")]
        HRESULT GetSeqRowSampleID(BSTR* pbstrSampleID);
        [id(0x00000012), helpstring("method GetSeqRowComment")]
        HRESULT GetSeqRowComment(BSTR* pbstrComment);
        [id(0x00000013), helpstring("method GetSeqRowLevelName")]
        HRESULT GetSeqRowLevelName(BSTR* pbstrLevelName);
        [id(0x00000014), helpstring("method GetSeqRowUserText")]
        HRESULT GetSeqRowUserText(
                        long nIndex,
                        BSTR* pbstrUserText);
        [id(0x00000015), helpstring("method GetSeqRowInstrumentMethod")]
        HRESULT GetSeqRowInstrumentMethod(BSTR* pbstrInstrumentMethod);
        [id(0x00000016), helpstring("method GetSeqRowProcessingMethod")]
        HRESULT GetSeqRowProcessingMethod(BSTR* pbstrProcessingMethod);
        [id(0x00000017), helpstring("method GetSeqRowCalibrationFile")]
        HRESULT GetSeqRowCalibrationFile(BSTR* pbstrCalibrationFile);
        [id(0x00000018), helpstring("method GetSeqRowVial")]
        HRESULT GetSeqRowVial(BSTR* pbstrVial);
        [id(0x00000019), helpstring("method GetSeqRowInjectionVolume")]
        HRESULT GetSeqRowInjectionVolume(double* pdInjVol);
        [id(0x0000001a), helpstring("method GetSeqRowSampleWeight")]
        HRESULT GetSeqRowSampleWeight(double* pdSampleWt);
        [id(0x0000001b), helpstring("method GetSeqRowSampleVolume")]
        HRESULT GetSeqRowSampleVolume(double* pdSampleVolume);
        [id(0x0000001c), helpstring("method GetSeqRowISTDAmount")]
        HRESULT GetSeqRowISTDAmount(double* pdISTDAmount);
        [id(0x0000001d), helpstring("method GetSeqRowDilutionFactor")]
        HRESULT GetSeqRowDilutionFactor(double* pdDilutionFactor);
        [id(0x0000001e), helpstring("method GetSeqRowUserLabel")]
        HRESULT GetSeqRowUserLabel(
                        long nIndex,
                        BSTR* pbstrUserLabel);
        [id(0x0000001f), helpstring("method InAcquisition")]
        HRESULT InAcquisition(long* pbInAcquisition);
        [id(0x00000020), helpstring("method GetNumberOfControllers")]
        HRESULT GetNumberOfControllers(long* pnNumControllers);
        [id(0x00000021), helpstring("method GetControllerType")]
        HRESULT GetControllerType(
                        long nIndex,
                        long* pnControllerType);
        [id(0x00000022), helpstring("method SetCurrentController")]
        HRESULT SetCurrentController(
                        long nControllerType,
                        long nControllerNumber);
        [id(0x00000023), helpstring("method GetCurrentController")]
        HRESULT GetCurrentController(
                        long* pnControllerType,
                        long* pnControllerNumber);
        [id(0x00000024), helpstring("method GetNumSpectra")]
        HRESULT GetNumSpectra(long* pnNumberOfSpectra);
        [id(0x00000025), helpstring("method GetNumStatusLog")]
        HRESULT GetNumStatusLog(long* pnNumberOfStatusLogEntries);
        [id(0x00000026), helpstring("method GetNumErrorLog")]
        HRESULT GetNumErrorLog(long* pnNumberOfErrorLogEntries);
        [id(0x00000027), helpstring("method GetNumTuneData")]
        HRESULT GetNumTuneData(long* pnNumTuneData);
        [id(0x00000028), helpstring("method GetMassResolution")]
        HRESULT GetMassResolution(double* pdMassResolution);
        [id(0x00000029), helpstring("method GetExpectedRunTime")]
        HRESULT GetExpectedRunTime(double* pdExpectedRunTime);
        [id(0x0000002a), helpstring("method GetNumTrailerExtra")]
        HRESULT GetNumTrailerExtra(long* pnNumberOfTrailerExtraEntries);
        [id(0x0000002b), helpstring("method GetLowMass")]
        HRESULT GetLowMass(double* pdLowMass);
        [id(0x0000002c), helpstring("method GetHighMass")]
        HRESULT GetHighMass(double* pdHighMass);
        [id(0x0000002d), helpstring("method GetStartTime")]
        HRESULT GetStartTime(double* pdStartTime);
        [id(0x0000002e), helpstring("method GetEndTime")]
        HRESULT GetEndTime(double* pdEndTime);
        [id(0x0000002f), helpstring("method GetMaxIntegratedIntensity")]
        HRESULT GetMaxIntegratedIntensity(double* pdMaxIntegIntensity);
        [id(0x00000030), helpstring("method GetMaxIntensity")]
        HRESULT GetMaxIntensity(long* pnMaxIntensity);
        [id(0x00000031), helpstring("method GetFirstSpectrumNumber")]
        HRESULT GetFirstSpectrumNumber(long* pnFirstSpectrum);
        [id(0x00000032), helpstring("method GetLastSpectrumNumber")]
        HRESULT GetLastSpectrumNumber(long* pnLastSpectrum);
        [id(0x00000033), helpstring("method GetInstrumentID")]
        HRESULT GetInstrumentID(long* pnInstrumentID);
        [id(0x00000034), helpstring("method GetInletID")]
        HRESULT GetInletID(long* pnInletID);
        [id(0x00000035), helpstring("method GetErrorFlag")]
        HRESULT GetErrorFlag(long* pnErrorFlag);
        [id(0x00000036), helpstring("method GetSampleVolume")]
        HRESULT GetSampleVolume(double* pdSampleVolume);
        [id(0x00000037), helpstring("method GetSampleWeight")]
        HRESULT GetSampleWeight(double* pdSampleWeight);
        [id(0x00000038), helpstring("method GetVialNumber")]
        HRESULT GetVialNumber(long* pnVialNumber);
        [id(0x00000039), helpstring("method GetInjectionVolume")]
        HRESULT GetInjectionVolume(double* pdInjectionVolume);
        [id(0x0000003a), helpstring("method GetFlags")]
        HRESULT GetFlags(BSTR* pbstrFlags);
        [id(0x0000003b), helpstring("method GetAcquisitionFileName")]
        HRESULT GetAcquisitionFileName(BSTR* pbstrFileName);
        [id(0x0000003c), helpstring("method GetInstrumentDescription")]
        HRESULT GetInstrumentDescription(BSTR* pbstrInstrumentDescription);
        [id(0x0000003d), helpstring("method GetAcquisitionDate")]
        HRESULT GetAcquisitionDate(BSTR* pbstrAcquisitionDate);
        [id(0x0000003e), helpstring("method GetOperator")]
        HRESULT GetOperator(BSTR* pbstrOperator);
        [id(0x0000003f), helpstring("method GetComment1")]
        HRESULT GetComment1(BSTR* pbstrComment1);
        [id(0x00000040), helpstring("method GetComment2")]
        HRESULT GetComment2(BSTR* pbstrComment2);
        [id(0x00000041), helpstring("method GetSampleAmountUnits")]
        HRESULT GetSampleAmountUnits(BSTR* pbstrSampleAmountUnits);
        [id(0x00000042), helpstring("method GetInjectionAmountUnits")]
        HRESULT GetInjectionAmountUnits(BSTR* pbstrInjectionAmountUnits);
        [id(0x00000043), helpstring("method GetSampleVolumeUnits")]
        HRESULT GetSampleVolumeUnits(BSTR* pbstrSampleVolumeUnits);
        [id(0x00000044), helpstring("method GetFilters")]
        HRESULT GetFilters(
                        VARIANT* pvarFilterArray,
                        long* pnArraySize);
        [id(0x00000045), helpstring("method ScanNumFromRT")]
        HRESULT ScanNumFromRT(
                        double dRT,
                        long* pnScanNumber);
        [id(0x00000046), helpstring("method RTFromScanNum")]
        HRESULT RTFromScanNum(
                        long nScanNumber,
                        double* pdRT);
        [id(0x00000047), helpstring("method GetFilterForScanNum")]
        HRESULT GetFilterForScanNum(
                        long nScanNumber,
                        BSTR* pbstrFilter);
        [id(0x00000048), helpstring("method GetFilterForScanRT")]
        HRESULT GetFilterForScanRT(
                        double dRT,
                        BSTR* pbstrFilter);
        [id(0x00000049), helpstring("method GetMassListFromScanNum")]
        HRESULT GetMassListFromScanNum(
                        long* pnScanNumber,
                        BSTR bstrFilter,
                        long nIntensityCutoffType,
                        long nIntensityCutoffValue,
                        long nMaxNumberOfPeaks,
                        long bCentroidResult,
                        double* pdCentroidPeakWidth,
                        VARIANT* pvarMassList,
                        VARIANT* pvarPeakFlags,
                        long* pnArraySize);
        [id(0x0000004a), helpstring("method GetMassListFromRT")]
        HRESULT GetMassListFromRT(
                        double* pdRT,
                        BSTR bstrFilter,
                        long nIntensityCutoffType,
                        long nIntensityCutoffValue,
                        long nMaxNumberOfPeaks,
                        long bCentroidResult,
                        double* pdCentroidPeakWidth,
                        VARIANT* pvarMassList,
                        VARIANT* pvarPeakFlags,
                        long* pnArraySize);
        [id(0x0000004b), helpstring("method GetNextMassListFromScanNum")]
        HRESULT GetNextMassListFromScanNum(
                        long* pnScanNumber,
                        BSTR bstrFilter,
                        long nIntensityCutoffType,
                        long nIntensityCutoffValue,
                        long nMaxNumberOfPeaks,
                        long bCentroidResult,
                        double* pdCentroidPeakWidth,
                        VARIANT* pvarMassList,
                        VARIANT* pvarPeakFlags,
                        long* pnArraySize);
        [id(0x0000004c), helpstring("method GetPrevMassListFromScanNum")]
        HRESULT GetPrevMassListFromScanNum(
                        long* pnScanNumber,
                        BSTR bstrFilter,
                        long nIntensityCutoffType,
                        long nIntensityCutoffValue,
                        long nMaxNumberOfPeaks,
                        long bCentroidResult,
                        double* pdCentroidPeakWidth,
                        VARIANT* pvarMassList,
                        VARIANT* pvarPeakFlags,
                        long* pnArraySize);
        [id(0x0000004d), helpstring("method IsProfileScanForScanNum")]
        HRESULT IsProfileScanForScanNum(
                        long nScanNumber,
                        long* pbIsProfileScan);
        [id(0x0000004e), helpstring("method IsCentroidScanForScanNum")]
        HRESULT IsCentroidScanForScanNum(
                        long nScanNumber,
                        long* pbIsCentroidScan);
        [id(0x0000004f), helpstring("method GetScanHeaderInfoForScanNum")]
        HRESULT GetScanHeaderInfoForScanNum(
                        long nScanNumber,
                        long* pnNumPackets,
                        double* pdStartTime,
                        double* pdLowMass,
                        double* pdHighMass,
                        double* pdTIC,
                        double* pdBasePeakMass,
                        double* pdBasePeakIntensity,
                        long* pnNumChannels,
                        long* pbUniformTime,
                        double* pdFrequency);
        [id(0x00000050), helpstring("method GetStatusLogForScanNum")]
        HRESULT GetStatusLogForScanNum(
                        long nScanNumber,
                        double* pdStatusLogRT,
                        VARIANT* pvarLabels,
                        VARIANT* pvarValues,
                        long* pnArraySize);
        [id(0x00000051), helpstring("method GetStatusLogForRT")]
        HRESULT GetStatusLogForRT(
                        double* pdRT,
                        VARIANT* pvarLabels,
                        VARIANT* pvarValues,
                        long* pnArraySize);
        [id(0x00000052), helpstring("method GetStatusLogLabelsForScanNum")]
        HRESULT GetStatusLogLabelsForScanNum(
                        long nScanNumber,
                        double* pdStatusLogRT,
                        VARIANT* pvarLabels,
                        long* pnArraySize);
        [id(0x00000053), helpstring("method GetStatusLogLabelsForRT")]
        HRESULT GetStatusLogLabelsForRT(
                        double* pdRT,
                        VARIANT* pvarLabels,
                        long* pnArraySize);
        [id(0x00000054), helpstring("method GetStatusLogValueForScanNum")]
        HRESULT GetStatusLogValueForScanNum(
                        long nScanNumber,
                        BSTR bstrLabel,
                        double* pdStatusLogRT,
                        VARIANT* pvarValue);
        [id(0x00000055), helpstring("method GetStatusLogValueForRT")]
        HRESULT GetStatusLogValueForRT(
                        double* pdRT,
                        BSTR bstrLabel,
                        VARIANT* pvarValue);
        [id(0x00000056), helpstring("method GetTrailerExtraForScanNum")]
        HRESULT GetTrailerExtraForScanNum(
                        long nScanNumber,
                        VARIANT* pvarLabels,
                        VARIANT* pvarValues,
                        long* pnArraySize);
        [id(0x00000057), helpstring("method GetTrailerExtraForRT")]
        HRESULT GetTrailerExtraForRT(
                        double* pdRT,
                        VARIANT* pvarLabels,
                        VARIANT* pvarValues,
                        long* pnArraySize);
        [id(0x00000058), helpstring("method GetTrailerExtraLabelsForScanNum")]
        HRESULT GetTrailerExtraLabelsForScanNum(
                        long nScanNumber,
                        VARIANT* pvarLabels,
                        long* pnArraySize);
        [id(0x00000059), helpstring("method GetTrailerExtraLabelsForRT")]
        HRESULT GetTrailerExtraLabelsForRT(
                        double* pdRT,
                        VARIANT* pvarLabels,
                        long* pnArraySize);
        [id(0x0000005a), helpstring("method GetTrailerExtraValueForScanNum")]
        HRESULT GetTrailerExtraValueForScanNum(
                        long nScanNumber,
                        BSTR bstrLabel,
                        VARIANT* pvarValue);
        [id(0x0000005b), helpstring("method GetTrailerExtraValueForRT")]
        HRESULT GetTrailerExtraValueForRT(
                        double* pdRT,
                        BSTR bstrLabel,
                        VARIANT* pvarValue);
        [id(0x0000005c), helpstring("method GetErrorLogItem")]
        HRESULT GetErrorLogItem(
                        long nItemNumber,
                        double* pdRT,
                        BSTR* pbstrErrorMessage);
        [id(0x0000005d), helpstring("method GetTuneData")]
        HRESULT GetTuneData(
                        long nSegmentNumber,
                        VARIANT* pvarLabels,
                        VARIANT* pvarValues,
                        long* pnArraySize);
        [id(0x0000005e), helpstring("method GetNumInstMethods")]
        HRESULT GetNumInstMethods(long* pnNumInstMethods);
        [id(0x0000005f), helpstring("method GetInstMethod")]
        HRESULT GetInstMethod(
                        long nInstMethodItem,
                        BSTR* pbstrInstMethod);
        [id(0x00000060), helpstring("method GetChroData")]
        HRESULT GetChroData(
                        long nChroType1,
                        long nChroOperator,
                        long nChroType2,
                        BSTR bstrFilter,
                        BSTR bstrMassRanges1,
                        BSTR bstrMassRanges2,
                        double dDelay,
                        double* pdStartTime,
                        double* pdEndTime,
                        long nSmoothingType,
                        long nSmoothingValue,
                        VARIANT* pvarChroData,
                        VARIANT* pvarPeakFlags,
                        long* pnArraySize);
        [id(0x00000061), helpstring("method RefreshViewOfFile")]
        HRESULT RefreshViewOfFile();
        [id(0x00000062), helpstring("method GetTuneDataValue")]
        HRESULT GetTuneDataValue(
                        long nSegmentNumber,
                        BSTR bstrLabel,
                        VARIANT* pvarValue);
        [id(0x00000063), helpstring("method GetTuneDataLabels")]
        HRESULT GetTuneDataLabels(
                        long nSegmentNumber,
                        VARIANT* pvarLabels,
                        long* pnArraySize);
        [id(0x00000064), helpstring("method GetInstName")]
        HRESULT GetInstName(BSTR* pbstrInstName);
        [id(0x00000065), helpstring("method GetInstModel")]
        HRESULT GetInstModel(BSTR* pbstrInstModel);
        [id(0x00000066), helpstring("method GetInstSerialNumber")]
        HRESULT GetInstSerialNumber(BSTR* pbstrInstSerialNumber);
        [id(0x00000067), helpstring("method GetInstSoftwareVersion")]
        HRESULT GetInstSoftwareVersion(BSTR* pbstrInstSoftwareVersion);
        [id(0x00000068), helpstring("method GetInstHardwareVersion")]
        HRESULT GetInstHardwareVersion(BSTR* pbstrInstHardwareVersion);
        [id(0x00000069), helpstring("method GetInstFlags")]
        HRESULT GetInstFlags(BSTR* pbstrInstFlags);
        [id(0x0000006a), helpstring("method GetInstNumChannelLabels")]
        HRESULT GetInstNumChannelLabels(long* pnInstNumChannelLabels);
        [id(0x0000006b), helpstring("method GetInstChannelLabel")]
        HRESULT GetInstChannelLabel(
                        long nChannelLabelNumber,
                        BSTR* pbstrInstChannelLabel);
        [id(0x0000006c), helpstring("method GetNumberOfControllersOfType")]
        HRESULT GetNumberOfControllersOfType(
                        long nControllerType,
                        long* pnNumControllersOfType);
        [id(0x0000006d), helpstring("method GetAverageMassList")]
        HRESULT GetAverageMassList(
                        long* pnFirstAvgScanNumber,
                        long* pnLastAvgScanNumber,
                        long* pnFirstBkg1ScanNumber,
                        long* pnLastBkg1ScanNumber,
                        long* pnFirstBkg2ScanNumber,
                        long* pnLastBkg2ScanNumber,
                        BSTR bstrFilter,
                        long nIntensityCutoffType,
                        long nIntensityCutoffValue,
                        long nMaxNumberOfPeaks,
                        long bCentroidResult,
                        double* pdCentroidPeakWidth,
                        VARIANT* pvarMassList,
                        VARIANT* pvarPeakFlags,
                        long* pnArraySize);
        [id(0x0000006e), helpstring("method IsThereMSData")]
        HRESULT IsThereMSData(long* pbMSData);
        [id(0x0000006f), helpstring("method HasExpMethod")]
        HRESULT HasExpMethod(long* pbMethod);
        [id(0x00000070), helpstring("method GetFilterMassPrecision")]
        HRESULT GetFilterMassPrecision(long* pnFilterMassPrecision);
        [id(0x00000071), helpstring("method GetStatusLogForPos")]
        HRESULT GetStatusLogForPos(
                        long nPos,
                        VARIANT* pvarRT,
                        VARIANT* pvarValue,
                        long* pnArraySize);
        [id(0x00000072), helpstring("method GetStatusLogAtIndex")]
        HRESULT GetStatusLogPlottableIndex(
                        VARIANT* pvarIndex,
                        VARIANT* pvarValues,
                        long* pnArraySize);
        [id(0x00000073), helpstring("method GetInstMethodNames")]
        HRESULT GetInstMethodNames(
                        long* pnNumInstMethods,
                        VARIANT* pvarNames);
        [id(0x00000074), helpstring("method SetMassTolerance")]
        HRESULT SetMassTolerance(
                        long bUseUserDefined,
                        double dMassTolerance,
                        long nUnits);
        [id(0x00000075), helpstring("method GetChros")]
        HRESULT GetChros(
                        long nNumChros,
                        double* pdStartTime,
                        double* pdEndTime,
                        VARIANT* pvarChroParamsArray,
                        VARIANT* pvarChroDataSizeArray,
                        VARIANT* pvarChroDataArray,
                        VARIANT* pvarPeakFlagsArray);
    };

    [
      odl,
      uuid(5E256644-7300-481F-9D43-33D892BFD912),
      helpstring("IXRawfile2 Interface"),
      dual,
      oleautomation
    ]
    interface IXRawfile2 : IXRawfile {
        [id(0x00000076), helpstring("method GetLabelData")]
        HRESULT GetLabelData(
                        VARIANT* pvarLabels,
                        VARIANT* pvarFlags,
                        long* pnScanNumber);
        [id(0x00000077), helpstring("method GetNoiseData")]
        HRESULT GetNoiseData(
                        VARIANT* pvarNoisePacket,
                        long* pnScanNumber);
        [id(0x00000078), helpstring("method GetSegmentedMassListFromRT")]
        HRESULT GetSegmentedMassListFromRT(
                        double* pdRT,
                        BSTR bstrFilter,
                        long nIntensityCutoffType,
                        long nIntensityCutoffValue,
                        long nMaxNumberOfPeaks,
                        long bCentroidResult,
                        double* pdCentroidPeakWidth,
                        VARIANT* pvarMassList,
                        VARIANT* pvarPeakFlags,
                        long* pnArraySize,
                        VARIANT* pvarSegments,
                        long* pnNumSegments,
                        VARIANT* pvarLowHighMassRange);
        [id(0x00000079), helpstring("method GetSegmentedMassListFromScanNum")]
        HRESULT GetSegmentedMassListFromScanNum(
                        long* pnScanNumber,
                        BSTR bstrFilter,
                        long nIntensityCutoffType,
                        long nIntensityCutoffValue,
                        long nMaxNumberOfPeaks,
                        long bCentroidResult,
                        double* pdCentroidPeakWidth,
                        VARIANT* pvarMassList,
                        VARIANT* pvarPeakFlags,
                        long* pnArraySize,
                        VARIANT* pvarSegments,
                        long* pnNumSegments,
                        VARIANT* pvarLowHighMassRange);
        [id(0x0000007a), helpstring("method GetScanEventForScanNum")]
        HRESULT GetScanEventForScanNum(
                        long nScanNumber,
                        BSTR* pbstrScanEvent);
        [id(0x0000007b), helpstring("method GetSeqRowUserTextEx")]
        HRESULT GetSeqRowUserTextEx(
                        long nIndex,
                        BSTR* pbstrUserText);
        [id(0x0000007c), helpstring("method GetSeqRowBarcode")]
        HRESULT GetSeqRowBarcode(BSTR* pbstrBarcode);
        [id(0x0000007d), helpstring("method GetSeqRowBarcodeStatus")]
        HRESULT GetSeqRowBarcodeStatus(long* pnBarcodeStatus);
    };

    [
      odl,
      uuid(5E256644-7301-481F-9D43-33D892BFD912),
      helpstring("IXRawfile3 Interface"),
      dual,
      oleautomation
    ]
    interface IXRawfile3 : IXRawfile2 {
        [id(0x0000007e), helpstring("method GetMassListRangeFromScanNum")]
        HRESULT GetMassListRangeFromScanNum(
                        long* pnScanNumber,
                        BSTR bstrFilter,
                        long nIntensityCutoffType,
                        long nIntensityCutoffValue,
                        long nMaxNumberOfPeaks,
                        long bCentroidResult,
                        double* pdCentroidPeakWidth,
                        VARIANT* pvarMassList,
                        VARIANT* pvarPeakFlags,
                        LPWSTR szMassRange1,
                        long* pnArraySize);
        [id(0x0000007f), helpstring("method GetMassListRangeFromRT")]
        HRESULT GetMassListRangeFromRT(
                        double* pdRT,
                        BSTR bstrFilter,
                        long nIntensityCutoffType,
                        long nIntensityCutoffValue,
                        long nMaxNumberOfPeaks,
                        long bCentroidResult,
                        double* pdCentroidPeakWidth,
                        VARIANT* pvarMassList,
                        VARIANT* pvarPeakFlags,
                        LPWSTR szMassRange1,
                        long* pnArraySize);
        [id(0x00000080), helpstring("method GetNextMassListRangeFromScanNum")]
        HRESULT GetNextMassListRangeFromScanNum(
                        long* pnScanNumber,
                        BSTR bstrFilter,
                        long nIntensityCutoffType,
                        long nIntensityCutoffValue,
                        long nMaxNumberOfPeaks,
                        long bCentroidResult,
                        double* pdCentroidPeakWidth,
                        VARIANT* pvarMassList,
                        VARIANT* pvarPeakFlags,
                        LPWSTR szMassRange1,
                        long* pnArraySize);
        [id(0x00000081), helpstring("method GetPrevMassListRangeFromScanNum")]
        HRESULT GetPrevMassListRangeFromScanNum(
                        long* pnScanNumber,
                        BSTR bstrFilter,
                        long nIntensityCutoffType,
                        long nIntensityCutoffValue,
                        long nMaxNumberOfPeaks,
                        long bCentroidResult,
                        double* pdCentroidPeakWidth,
                        VARIANT* pvarMassList,
                        VARIANT* pvarPeakFlags,
                        LPWSTR szMassRange1,
                        long* pnArraySize);
        [id(0x00000082), helpstring("method GetPrecursorInfoFromScanNum")]
        HRESULT GetPrecursorInfoFromScanNum(
                        long nScanNumber,
                        VARIANT* pvarPrecursorInfos,
                        long* pnArraySize);
    };

    [
      odl,
      uuid(55EA38B7-5419-4BE4-9198-3E4D78E6A532),
      helpstring("IXVirMS Interface"),
      dual,
      oleautomation
    ]
    interface IXVirMS : IDispatch {
        [id(0x00000001), helpstring("method Create")]
        HRESULT Create([in] LPWSTR szFileName);
        [id(0x00000002), helpstring("method Close")]
        HRESULT Close();
        [id(0x00000003), helpstring("method GetFileName")]
        HRESULT GetFileName([in] BSTR* pbstrFileName);
        [id(0x00000004), propget, helpstring("property IsError")]
        HRESULT IsError([out, retval] long* pVal);
        [id(0x00000005), propget, helpstring("property ErrorCode")]
        HRESULT ErrorCode([out, retval] long* pVal);
        [id(0x00000006), propget, helpstring("property IsValid")]
        HRESULT IsValid([out, retval] long* pVal);
        [id(0x00000007), helpstring("method WriteInstID")]
        HRESULT WriteInstID(
                        [in] LPWSTR szName,
                        [in] LPWSTR szModel,
                        [in] LPWSTR szSerialNumber,
                        [in] LPWSTR szSoftwareRev,
                        [in] LPWSTR ExpType);
        [id(0x00000008), helpstring("method WriteRunHeaderInfo")]
        HRESULT WriteRunHeaderInfo(
                        [in] double dExpectedRunTime,
                        [in] double dMassResolution,
                        [in] LPWSTR szComment1,
                        [in] LPWSTR szComment2);
        [id(0x00000009), helpstring("method WriteInstData")]
        HRESULT WriteInstData(
                        [in] unsigned char* pcData,
                        [in] long nDataSize,
                        [in] MS_PacketTypes eType);
        [id(0x0000000a), helpstring("method SetTrailerHeaderNumFields")]
        HRESULT SetTrailerHeaderNumFields([in] long nFields);
        [id(0x0000000b), helpstring("method SetTrailerHeaderField")]
        HRESULT SetTrailerHeaderField(
                        [in] long nIdx,
                        [in] LPWSTR szLabel,
                        [in] MS_DataTypes eDataType,
                        [in] long nPrecision);
        [id(0x0000000c), helpstring("method WriteTrailerHeader")]
        HRESULT WriteTrailerHeader();
        [id(0x0000000d), helpstring("method SetStatusLogHeaderNumFields")]
        HRESULT SetStatusLogHeaderNumFields(long nFields);
        [id(0x0000000e), helpstring("method SetStatusLogHeaderField")]
        HRESULT SetStatusLogHeaderField(
                        [in] long nIdx,
                        [in] LPWSTR szLabel,
                        [in] MS_DataTypes eDataType,
                        [in] long nPrecision);
        [id(0x0000000f), helpstring("method WriteStatusLogHeader")]
        HRESULT WriteStatusLogHeader();
        [id(0x00000010), helpstring("method SetTuneDataHeaderNumFields")]
        HRESULT SetTuneDataHeaderNumFields(long nFields);
        [id(0x00000011), helpstring("method SetTuneDataHeaderField")]
        HRESULT SetTuneDataHeaderField(
                        [in] long nIdx,
                        [in] LPWSTR szLabel,
                        [in] MS_DataTypes eDataType,
                        [in] long nPrecision);
        [id(0x00000012), helpstring("method WriteTuneDataHeader")]
        HRESULT WriteTuneDataHeader();
        [id(0x00000013), helpstring("method WriteTuneData")]
        HRESULT WriteTuneData([in] unsigned char* pcData);
        [id(0x00000014), helpstring("method WriteStatusLog")]
        HRESULT WriteStatusLog(
                        [in] single fTime,
                        [in] unsigned char* pcData);
        [id(0x00000015), helpstring("method WriteTrailer")]
        HRESULT WriteTrailer([in] unsigned char* pcData);
        [id(0x00000016), helpstring("method InitializeScanEvent")]
        HRESULT InitializeScanEvent([in] MS_ScanEvent* pScanEvent);
        [id(0x00000017), helpstring("method InitMethodScanEvents")]
        HRESULT InitMethodScanEvents();
        [id(0x00000018), helpstring("method SetMethodScanEvent")]
        HRESULT SetMethodScanEvent(
                        [in] long nSegment,
                        [in] long nScanEvent,
                        [in] MS_ScanEvent* pScanEvent);
        [id(0x00000019), helpstring("method WriteMethodScanEvents")]
        HRESULT WriteMethodScanEvents();
        [id(0x0000001a), helpstring("method WriteScanIndex")]
        HRESULT WriteScanIndex(
                        [in] MS_ScanIndex* pScanIndex,
                        [in] MS_ScanEvent* pScanEvent);
        [id(0x0000001b), helpstring("method WriteInstData2")]
        HRESULT WriteInstData2(
                        [in] long nNumPkts,
                        [in] MS_DataPeak* pPackets);
        [id(0x0000001c), helpstring("method InitializeScanIndex")]
        HRESULT InitializeScanIndex(
                        [in] long nScanIndexPosition,
                        [in] MS_PacketTypes eType);
        [id(0x0000001d), helpstring("method WriteScanIndex2")]
        HRESULT WriteScanIndex2([in] MS_ScanIndex* pScanIndex);
    };

    typedef enum {
        MS_DataTypes_NULL = 0,
        MS_DataTypes_CHAR = 1,
        MS_DataTypes_TRUEFALSE = 2,
        MS_DataTypes_YESNO = 3,
        MS_DataTypes_ONOFF = 4,
        MS_DataTypes_UCHAR = 5,
        MS_DataTypes_SHORT = 6,
        MS_DataTypes_USHORT = 7,
        MS_DataTypes_LONG = 8,
        MS_DataTypes_ULONG = 9,
        MS_DataTypes_FLOAT = 10,
        MS_DataTypes_DOUBLE = 11,
        MS_DataTypes_CHAR_STRING = 12,
        MS_DataTypes_WCHAR_STRING = 13
    } MS_DataTypes;

    [
      odl,
      uuid(1A2BF13F-4E2F-4E7D-9D67-435D5998312B),
      helpstring("IXVirUV Interface"),
      dual,
      oleautomation
    ]
    interface IXVirUV : IDispatch {
        [id(0x00000001), helpstring("method Create")]
        HRESULT Create([in] LPWSTR szFileName);
        [id(0x00000002), helpstring("method Close")]
        HRESULT Close();
        [id(0x00000003), helpstring("method GetFileName")]
        HRESULT GetFileName(BSTR* pbstrFileName);
        [id(0x00000004), propget, helpstring("property IsError")]
        HRESULT IsError([out, retval] long* pVal);
        [id(0x00000005), propget, helpstring("property ErrorCode")]
        HRESULT ErrorCode([out, retval] long* pVal);
        [id(0x00000006), propget, helpstring("property IsValid")]
        HRESULT IsValid([out, retval] long* pVal);
        [id(0x00000007), helpstring("method WriteErrorLog")]
        HRESULT WriteErrorLog(
                        [in] single fTime,
                        [in] LPWSTR szError);
        [id(0x00000008), helpstring("method WriteInstID")]
        HRESULT WriteInstID(
                        [in] LPWSTR szName,
                        [in] LPWSTR szModel,
                        [in] LPWSTR szSerialNumber,
                        [in] LPWSTR szSoftwareRev,
                        [in] LPWSTR szLabel1,
                        [in] LPWSTR szLabel2,
                        [in] LPWSTR szLabel3,
                        [in] LPWSTR szLabel4);
        [id(0x00000009), helpstring("method WriteRunHeaderInfo")]
        HRESULT WriteRunHeaderInfo(double dExpectedRunTime);
        [id(0x0000000a), helpstring("method WriteInstData")]
        HRESULT WriteInstData(
                        [in] unsigned char* pcData,
                        [in] long nDataSize,
                        [in] MS_PacketTypes eType,
                        [in] long nDataLen);
        [id(0x0000000b), helpstring("method WriteScanIndex")]
        HRESULT WriteScanIndex([in] MS_UVScanIndex* pScanIndex);
    };

    [
      uuid(5FE970B2-29C3-11D3-811D-00104B304896),
      helpstring("XRawfile Class")
    ]
    coclass XRawfile {
        [default] interface IXRawfile;
    };

    [
      uuid(281748DC-D278-4303-9888-767BAD540E80),
      helpstring("XVirMS Class")
    ]
    coclass XVirMS {
        [default] interface IXVirMS;
    };

    [
      uuid(20AF91E1-FBCB-40F5-B4D4-98F1291EDEF0),
      helpstring("XVirUV Class")
    ]
    coclass XVirUV {
        [default] interface IXVirUV;
    };
};