326 lines
14 KiB
Plaintext
326 lines
14 KiB
Plaintext
|
/****************************************************************************
|
||
|
**
|
||
|
** Copyright 1999 Adaptec, Inc., All Rights Reserved.
|
||
|
**
|
||
|
** This software contains the valuable trade secrets of Adaptec. The
|
||
|
** software is protected under copyright laws as an unpublished work of
|
||
|
** Adaptec. Notice is for informational purposes only and does not imply
|
||
|
** publication. The user of this software may make copies of the software
|
||
|
** for use with parts manufactured by Adaptec or under license from Adaptec
|
||
|
** and for no other use.
|
||
|
**
|
||
|
****************************************************************************/
|
||
|
|
||
|
/****************************************************************************
|
||
|
**
|
||
|
** Module Name: IMAPI.idl
|
||
|
**
|
||
|
** Description: IDL soruce for Image Mastering API (IMAPI). The file will
|
||
|
** be processed by the MIDL tool to produce the type library
|
||
|
** (IMAPI.tlb) and marshalling code.
|
||
|
**
|
||
|
** Programmers: Daniel Evers (dle)
|
||
|
** Tom Halloran (tgh)
|
||
|
** Don Lilly (drl)
|
||
|
** Daniel Polfer (dap)
|
||
|
**
|
||
|
** History: 8/18/99 (dap) Opened history and added header.
|
||
|
**
|
||
|
** Notes: This file created using 4 spaces per tab.
|
||
|
**
|
||
|
****************************************************************************/
|
||
|
|
||
|
import "oaidl.idl";
|
||
|
import "ocidl.idl";
|
||
|
import "propidl.idl";
|
||
|
|
||
|
// ---------------------------------------------------------------------------
|
||
|
|
||
|
[
|
||
|
object,
|
||
|
uuid(85AC9776-CA88-4cf2-894E-09598C078A41),
|
||
|
helpstring("IDiscRecorder Interface"),
|
||
|
pointer_default(unique)
|
||
|
]
|
||
|
interface IDiscRecorder : IUnknown
|
||
|
{
|
||
|
enum MEDIA_TYPES {
|
||
|
// Media types
|
||
|
MEDIA_CDDA_CDROM = 1,
|
||
|
MEDIA_CD_ROM_XA,
|
||
|
MEDIA_CD_I,
|
||
|
MEDIA_CD_EXTRA,
|
||
|
MEDIA_CD_OTHER,
|
||
|
MEDIA_SPECIAL };
|
||
|
|
||
|
enum MEDIA_FLAGS {
|
||
|
// Media flags
|
||
|
MEDIA_BLANK = 0x00000001,
|
||
|
MEDIA_RW = 0x00000002,
|
||
|
MEDIA_WRITABLE = 0x00000004,
|
||
|
MEDIA_FORMAT_UNUSABLE_BY_IMAPI = 0x00000008 };
|
||
|
|
||
|
enum RECORDER_TYPES {
|
||
|
// Recorder flags
|
||
|
RECORDER_CDR = 0x00000001,
|
||
|
RECORDER_CDRW = 0x00000002 };
|
||
|
|
||
|
const ULONG RECORDER_DOING_NOTHING = 0;
|
||
|
const ULONG RECORDER_OPENED = 0x00000001;
|
||
|
const ULONG RECORDER_BURNING = 0x00000002;
|
||
|
|
||
|
[helpstring("method Init")] HRESULT Init([in,size_is(nulIDSize)] byte * pbyUniqueID, [in] ULONG nulIDSize, [in] ULONG nulDriveNumber);
|
||
|
[helpstring("method GetRecorderGUID")] HRESULT GetRecorderGUID([in,out,unique,size_is(ulBufferSize)] byte * pbyUniqueID, [in] ULONG ulBufferSize, [out] ULONG *pulReturnSizeRequired );
|
||
|
[helpstring("method GetRecorderType")] HRESULT GetRecorderType([out] long *fTypeCode);
|
||
|
[helpstring("method GetDisplayNames")] HRESULT GetDisplayNames( [in,out,unique] BSTR *pbstrVendorID, [in,out,unique] BSTR *pbstrProductID, [in,out,unique] BSTR *pbstrRevision );
|
||
|
[helpstring("method GetBasePnPID")] HRESULT GetBasePnPID([out] BSTR *pbstrBasePnPID);
|
||
|
[helpstring("method GetPath")] HRESULT GetPath([out] BSTR *pbstrPath);
|
||
|
[helpstring("method GetRecorderProperties")] HRESULT GetRecorderProperties([out] IPropertyStorage **ppPropStg);
|
||
|
[helpstring("method SetRecorderProperties")] HRESULT SetRecorderProperties([in] IPropertyStorage *pPropStg);
|
||
|
[helpstring("method GetRecorderState")] HRESULT GetRecorderState([out] ULONG *pulDevStateFlags);
|
||
|
[helpstring("method OpenExclusive")] HRESULT OpenExclusive();
|
||
|
[helpstring("method QueryMediaType")] HRESULT QueryMediaType([out] long *fMediaType, [out] long *fMediaFlags);
|
||
|
[helpstring("method QueryMediaInfo")] HRESULT QueryMediaInfo([out] byte *pbSessions, [out] byte *pbLastTrack, [out] ULONG *ulStartAddress, [out] ULONG *ulNextWritable, [out] ULONG *ulFreeBlocks );
|
||
|
[helpstring("method Eject")] HRESULT Eject();
|
||
|
[helpstring("method Erase")] HRESULT Erase( [in] boolean bFullErase );
|
||
|
[helpstring("method Close")] HRESULT Close();
|
||
|
};
|
||
|
|
||
|
// ---------------------------------------------------------------------------
|
||
|
|
||
|
[
|
||
|
object,
|
||
|
uuid(9B1921E1-54AC-11d3-9144-00104BA11C5E),
|
||
|
helpstring("IEnumDiscRecorders Interface"),
|
||
|
pointer_default(unique)
|
||
|
]
|
||
|
interface IEnumDiscRecorders : IUnknown
|
||
|
{
|
||
|
HRESULT Next( [in] ULONG cRecorders, [out,size_is(cRecorders),length_is(*pcFetched)] IDiscRecorder **ppRecorder, [out] ULONG *pcFetched );
|
||
|
HRESULT Skip([in] ULONG cRecorders);
|
||
|
HRESULT Reset();
|
||
|
HRESULT Clone([out] IEnumDiscRecorders **ppEnum);
|
||
|
}
|
||
|
|
||
|
// ---------------------------------------------------------------------------
|
||
|
|
||
|
[
|
||
|
object,
|
||
|
uuid(DDF445E1-54BA-11d3-9144-00104BA11C5E),
|
||
|
helpstring("IEnumDiscMasterFormats Interface"),
|
||
|
pointer_default(unique)
|
||
|
]
|
||
|
interface IEnumDiscMasterFormats : IUnknown
|
||
|
{
|
||
|
HRESULT Next( [in] ULONG cFormats, [out,size_is(cFormats),length_is(*pcFetched)] LPIID lpiidFormatID, [out] ULONG *pcFetched );
|
||
|
HRESULT Skip([in] ULONG cFormats);
|
||
|
HRESULT Reset();
|
||
|
HRESULT Clone([out] IEnumDiscMasterFormats **ppEnum);
|
||
|
}
|
||
|
|
||
|
// ---------------------------------------------------------------------------
|
||
|
|
||
|
[
|
||
|
object,
|
||
|
uuid(E3BC42CD-4E5C-11D3-9144-00104BA11C5E),
|
||
|
helpstring("IRedbookDiscMaster Interface"),
|
||
|
pointer_default(unique)
|
||
|
]
|
||
|
interface IRedbookDiscMaster : IUnknown
|
||
|
{
|
||
|
[helpstring("method GetTotalAudioTracks")] HRESULT GetTotalAudioTracks([out,retval] long *pnTracks);
|
||
|
[helpstring("method GetTotalAudioBlocks")] HRESULT GetTotalAudioBlocks([out,retval] long *pnBlocks);
|
||
|
[helpstring("method GetUsedAudioBlocks")] HRESULT GetUsedAudioBlocks([out,retval] long *pnBlocks);
|
||
|
[helpstring("method GetAvailableAudioTrackBlocks")] HRESULT GetAvailableAudioTrackBlocks([out,retval] long *pnBlocks);
|
||
|
[helpstring("method GetAudioBlockSize")] HRESULT GetAudioBlockSize([out,retval] long *pnBlockBytes);
|
||
|
[helpstring("method CreateAudioTrack")] HRESULT CreateAudioTrack([in] long nBlocks);
|
||
|
[helpstring("method AddAudioTrackBlocks")] HRESULT AddAudioTrackBlocks([in,size_is(cb)] byte *pby, [in] long cb);
|
||
|
[helpstring("method CloseAudioTrack")] HRESULT CloseAudioTrack();
|
||
|
}
|
||
|
|
||
|
// ---------------------------------------------------------------------------
|
||
|
|
||
|
[
|
||
|
object,
|
||
|
uuid(E3BC42CE-4E5C-11D3-9144-00104BA11C5E),
|
||
|
helpstring("IJolietDiscMaster Interface"),
|
||
|
pointer_default(unique)
|
||
|
]
|
||
|
interface IJolietDiscMaster : IUnknown
|
||
|
{
|
||
|
[helpstring("method GetTotalDataBlocks")] HRESULT GetTotalDataBlocks([out,retval] long *pnBlocks);
|
||
|
[helpstring("method GetUsedDataBlocks")] HRESULT GetUsedDataBlocks([out,retval] long *pnBlocks);
|
||
|
[helpstring("method GetDataBlockSize")] HRESULT GetDataBlockSize([out,retval] long *pnBlockBytes);
|
||
|
[helpstring("method AddData")] HRESULT AddData([in] IStorage * pStorage, long lFileOverwrite);
|
||
|
[helpstring("method GetJolietProperties")] HRESULT GetJolietProperties([out] IPropertyStorage **ppPropStg);
|
||
|
[helpstring("method SetJolietProperties")] HRESULT SetJolietProperties([in] IPropertyStorage *pPropStg);
|
||
|
}
|
||
|
|
||
|
// ---------------------------------------------------------------------------
|
||
|
|
||
|
[
|
||
|
object,
|
||
|
uuid(EC9E51C1-4E5D-11D3-9144-00104BA11C5E),
|
||
|
helpstring("IDiscMasterProgressEvents Interface"),
|
||
|
pointer_default(unique)
|
||
|
]
|
||
|
interface IDiscMasterProgressEvents : IUnknown
|
||
|
{
|
||
|
[helpstring("method QueryCancel")] HRESULT QueryCancel([out,retval] boolean *pbCancel);
|
||
|
[helpstring("method NotifyPnPActivity")] HRESULT NotifyPnPActivity();
|
||
|
[helpstring("method NotifyAddProgress")] HRESULT NotifyAddProgress([in] long nCompletedSteps, [in] long nTotalSteps);
|
||
|
[helpstring("method NotifyBlockProgress")] HRESULT NotifyBlockProgress([in] long nCompleted, [in] long nTotal);
|
||
|
[helpstring("method NotifyTrackProgress")] HRESULT NotifyTrackProgress([in] long nCurrentTrack, [in] long nTotalTracks);
|
||
|
[helpstring("method NotifyPreparingBurn")] HRESULT NotifyPreparingBurn([in] long nEstimatedSeconds);
|
||
|
[helpstring("method NotifyClosingDisc")] HRESULT NotifyClosingDisc([in] long nEstimatedSeconds);
|
||
|
[helpstring("method NotifyBurnComplete")] HRESULT NotifyBurnComplete([in] HRESULT status);
|
||
|
[helpstring("method NotifyEraseComplete")] HRESULT NotifyEraseComplete([in] HRESULT status);
|
||
|
}
|
||
|
|
||
|
// ---------------------------------------------------------------------------
|
||
|
|
||
|
[
|
||
|
object,
|
||
|
uuid(520CCA62-51A5-11D3-9144-00104BA11C5E),
|
||
|
|
||
|
helpstring("IDiscMaster Interface"),
|
||
|
pointer_default(unique)
|
||
|
]
|
||
|
interface IDiscMaster : IUnknown
|
||
|
{
|
||
|
[helpstring("method Open")] HRESULT Open();
|
||
|
[helpstring("method EnumDiscMasterFormats")] HRESULT EnumDiscMasterFormats([out] IEnumDiscMasterFormats **ppEnum);
|
||
|
[helpstring("method GetActiveDiscMasterFormat")] HRESULT GetActiveDiscMasterFormat([out] LPIID lpiid );
|
||
|
[helpstring("method SetActiveDiscMasterFormat")] HRESULT SetActiveDiscMasterFormat([in] REFIID riid, [out,iid_is(riid)] void **ppUnk);
|
||
|
[helpstring("method EnumDiscRecorders")] HRESULT EnumDiscRecorders([out] IEnumDiscRecorders ** ppEnum);
|
||
|
[helpstring("method GetActiveDiscRecorder")] HRESULT GetActiveDiscRecorder([out] IDiscRecorder **ppRecorder);
|
||
|
[helpstring("method SetActiveDiscRecorder")] HRESULT SetActiveDiscRecorder([in] IDiscRecorder *pRecorder);
|
||
|
[helpstring("method ClearFormatContent")] HRESULT ClearFormatContent();
|
||
|
[helpstring("method ProgressAdvise")] HRESULT ProgressAdvise([in] IDiscMasterProgressEvents *pEvents, [out,retval] UINT_PTR *pvCookie);
|
||
|
[helpstring("method ProgressUnadvise")] HRESULT ProgressUnadvise([in] UINT_PTR vCookie);
|
||
|
[helpstring("method RecordDisc")] HRESULT RecordDisc([in] boolean bSimulate, [in] boolean bEjectAfterBurn);
|
||
|
[helpstring("method Close")] HRESULT Close();
|
||
|
};
|
||
|
|
||
|
// ---------------------------------------------------------------------------
|
||
|
|
||
|
[
|
||
|
object,
|
||
|
uuid(520CCA64-51A5-11D3-9144-00104BA11C5E),
|
||
|
helpstring("IDiscStash Interface"),
|
||
|
pointer_default(unique)
|
||
|
]
|
||
|
interface IDiscStash : IUnknown
|
||
|
{
|
||
|
[helpstring("method OpenExclusive")] HRESULT OpenExclusive([out,retval] UINT_PTR *pvCookie);
|
||
|
[helpstring("method GetTotalStashBytes")] HRESULT GetTotalStashBytes([in] UINT_PTR vCookie, [out, retval] unsigned __int64 *plibStashBytes);
|
||
|
[helpstring("method Read")] HRESULT Read([in] UINT_PTR vCookie, [out, size_is(cb), length_is(*pcbRead)] byte *pby, [in] long cb, [out,retval] long *pcbRead);
|
||
|
[helpstring("method Write")] HRESULT Write([in] UINT_PTR vCookie, [in,size_is(cb)] byte *pby, [in] long cb);
|
||
|
[helpstring("method Seek")] HRESULT Seek([in] UINT_PTR vCookie, [in] __int64 dlibMove, [in] long dwOrigin, [out] unsigned __int64 *plibNewPosition);
|
||
|
[helpstring("method Close")] HRESULT Close([in] UINT_PTR vCookie);
|
||
|
[helpstring("method GetFileHandle")] HRESULT GetFileHandle([out,retval] UINT_PTR *phFileHandle);
|
||
|
};
|
||
|
|
||
|
// ---------------------------------------------------------------------------
|
||
|
|
||
|
[
|
||
|
object,
|
||
|
uuid(520CCA66-51A5-11D3-9144-00104BA11C5E),
|
||
|
helpstring("IBurnEngine Interface"),
|
||
|
pointer_default(unique)
|
||
|
]
|
||
|
interface IBurnEngine : IUnknown
|
||
|
{
|
||
|
typedef enum
|
||
|
{
|
||
|
eBurnProgressNoError = 0,
|
||
|
eBurnProgressNotStarted,
|
||
|
eBurnProgressBurning,
|
||
|
eBurnProgressComplete,
|
||
|
eBurnProgressError,
|
||
|
eBurnProgressLossOfStreamingError,
|
||
|
eBurnProgressMediaWriteProtect,
|
||
|
eBurnProgressUnableToWriteToMedia,
|
||
|
eBurnProgressBadHandle
|
||
|
} BURN_PROGRESS_STATUS;
|
||
|
|
||
|
typedef struct tag_BURN_PROGRESS
|
||
|
{
|
||
|
DWORD dwCancelBurn; // (IN) if not zero, cancel the burn.
|
||
|
DWORD dwSectionsDone; // (OUT) Number of sections completed.
|
||
|
DWORD dwTotalSections;// (OUT) Total number of sections to burn.
|
||
|
DWORD dwBlocksDone; // (OUT) Number of blocks completed.
|
||
|
DWORD dwTotalBlocks; // (OUT) Total number of blocks to burn.
|
||
|
BURN_PROGRESS_STATUS eStatus; // (OUT) Status of the progress operation.
|
||
|
} BURN_PROGRESS, *PBURN_PROGRESS;
|
||
|
|
||
|
[helpstring("method ReadOpen")] HRESULT ReadOpen([in] long bOpen);
|
||
|
[helpstring("method EnumDiscRecorders")] HRESULT EnumDiscRecorders([out] IEnumDiscRecorders ** ppEnum);
|
||
|
[helpstring("method GetActiveDiscRecorder")] HRESULT GetActiveDiscRecorder([out,retval] IDiscRecorder **ppRecorder);
|
||
|
[helpstring("method SetActiveDiscRecorder")] HRESULT SetActiveDiscRecorder([in] IDiscRecorder *pRecorder);
|
||
|
[helpstring("method Read")] HRESULT Read([in,out]byte *pby, [in] long sb, [in] long hmb, [in] long * br );
|
||
|
[helpstring("method GetSessionInfo")] HRESULT GetSessionInfo([in,out]byte *pbsessions, [in,out] byte *pblasttrack, [in,out] unsigned long *ulstartaddress, [in,out] unsigned long *ulnextwritable, [in,out] unsigned long *ulfreeblocks );
|
||
|
[helpstring("method Burn")] HRESULT Burn([in,size_is(cb)] byte *pby, [in] long cb, [in] long bSimulate, [in] unsigned long ulsession, [in] unsigned long ulstartoffset, [in] long bEjectAfterBurn );
|
||
|
[helpstring("method GetBurnProgress")] HRESULT(GetBurnProgress)([in,out]PBURN_PROGRESS pBurnProgress);
|
||
|
};
|
||
|
|
||
|
// ---------------------------------------------------------------------------
|
||
|
|
||
|
[
|
||
|
uuid(C49F2184-50A7-11D3-9144-00104BA11C5E),
|
||
|
version(1.0),
|
||
|
helpstring("Microsoft IMAPI 1.0 Type Library")
|
||
|
]
|
||
|
library IMAPILib
|
||
|
{
|
||
|
// importlib("stdole32.tlb");
|
||
|
importlib("stdole2.tlb");
|
||
|
|
||
|
enum MEDIA_TYPES;
|
||
|
enum MEDIA_FLAGS;
|
||
|
enum RECORDER_TYPES;
|
||
|
|
||
|
[
|
||
|
uuid(520CCA61-51A5-11D3-9144-00104BA11C5E),
|
||
|
helpstring("Microsoft IMAPI Disc Recorder")
|
||
|
]
|
||
|
coclass MSDiscRecorderObj
|
||
|
{
|
||
|
[default] interface IDiscRecorder;
|
||
|
};
|
||
|
[
|
||
|
uuid(520CCA63-51A5-11D3-9144-00104BA11C5E),
|
||
|
helpstring("Microsoft IMAPI Disc Master")
|
||
|
]
|
||
|
coclass MSDiscMasterObj
|
||
|
{
|
||
|
[default] interface IDiscMaster;
|
||
|
interface IRedbookDiscMaster;
|
||
|
interface IJolietDiscMaster;
|
||
|
};
|
||
|
[
|
||
|
uuid(520CCA65-51A5-11D3-9144-00104BA11C5E),
|
||
|
helpstring("Microsoft IMAPI Disc Stash")
|
||
|
]
|
||
|
coclass MSDiscStashObj
|
||
|
{
|
||
|
[default] interface IDiscStash;
|
||
|
};
|
||
|
[
|
||
|
uuid(520CCA67-51A5-11D3-9144-00104BA11C5E),
|
||
|
helpstring("Microsoft IMAPI Burn Engine")
|
||
|
]
|
||
|
coclass MSBurnEngineObj
|
||
|
{
|
||
|
[default] interface IBurnEngine;
|
||
|
};
|
||
|
[
|
||
|
uuid(8A03567A-63CB-4BA8-BAF6-52119816D1EF),
|
||
|
helpstring("Microsoft IMAPI Disc Recorder Enumerator")
|
||
|
]
|
||
|
coclass MSEnumDiscRecordersObj
|
||
|
{
|
||
|
[default] interface IEnumDiscRecorders;
|
||
|
};
|
||
|
};
|