;
; Definition file of VSSAPI.DLL
; Automatic generated by gendef
; written by Kai Tietz 2008
;
LIBRARY "VSSAPI.DLL"
EXPORTS
IsVolumeSnapshotted
VssFreeSnapshotProperties
ShouldBlockRevert
; public: __cdecl CVssJetWriter::CVssJetWriter(void)__ptr64 
??0CVssJetWriter@@QEAA@XZ
; public: __cdecl CVssWriter::CVssWriter(void)__ptr64 
??0CVssWriter@@QEAA@XZ
; public: virtual __cdecl CVssJetWriter::~CVssJetWriter(void)__ptr64 
??1CVssJetWriter@@UEAA@XZ
; public: virtual __cdecl CVssWriter::~CVssWriter(void)__ptr64 
??1CVssWriter@@UEAA@XZ
; protected: bool __cdecl CVssJetWriter::AreComponentsSelected(void)const __ptr64 
?AreComponentsSelected@CVssJetWriter@@IEBA_NXZ
; protected: bool __cdecl CVssWriter::AreComponentsSelected(void)const __ptr64 
?AreComponentsSelected@CVssWriter@@IEBA_NXZ
; long __cdecl CreateVssBackupComponents(class IVssBackupComponents *__ptr64 *__ptr64)
?CreateVssBackupComponents@@YAJPEAPEAVIVssBackupComponents@@@Z
; long __cdecl CreateVssExamineWriterMetadata(unsigned short *__ptr64,class IVssExamineWriterMetadata *__ptr64 *__ptr64)
?CreateVssExamineWriterMetadata@@YAJPEAGPEAPEAVIVssExamineWriterMetadata@@@Z
; long __cdecl CreateVssSnapshotSetDescription(struct _GUID,long,class IVssSnapshotSetDescription *__ptr64 *__ptr64)
?CreateVssSnapshotSetDescription@@YAJU_GUID@@JPEAPEAVIVssSnapshotSetDescription@@@Z
; protected: enum _VSS_BACKUP_TYPE __cdecl CVssJetWriter::GetBackupType(void)const __ptr64 
?GetBackupType@CVssJetWriter@@IEBA?AW4_VSS_BACKUP_TYPE@@XZ
; protected: enum _VSS_BACKUP_TYPE __cdecl CVssWriter::GetBackupType(void)const __ptr64 
?GetBackupType@CVssWriter@@IEBA?AW4_VSS_BACKUP_TYPE@@XZ
; protected: long __cdecl CVssJetWriter::GetContext(void)const __ptr64 
?GetContext@CVssJetWriter@@IEBAJXZ
; protected: long __cdecl CVssWriter::GetContext(void)const __ptr64 
?GetContext@CVssWriter@@IEBAJXZ
; protected: enum _VSS_APPLICATION_LEVEL __cdecl CVssJetWriter::GetCurrentLevel(void)const __ptr64 
?GetCurrentLevel@CVssJetWriter@@IEBA?AW4_VSS_APPLICATION_LEVEL@@XZ
; protected: enum _VSS_APPLICATION_LEVEL __cdecl CVssWriter::GetCurrentLevel(void)const __ptr64 
?GetCurrentLevel@CVssWriter@@IEBA?AW4_VSS_APPLICATION_LEVEL@@XZ
; protected: struct _GUID __cdecl CVssJetWriter::GetCurrentSnapshotSetId(void)const __ptr64 
?GetCurrentSnapshotSetId@CVssJetWriter@@IEBA?AU_GUID@@XZ
; protected: struct _GUID __cdecl CVssWriter::GetCurrentSnapshotSetId(void)const __ptr64 
?GetCurrentSnapshotSetId@CVssWriter@@IEBA?AU_GUID@@XZ
; protected: unsigned short const *__ptr64 *__ptr64 __cdecl CVssJetWriter::GetCurrentVolumeArray(void)const __ptr64 
?GetCurrentVolumeArray@CVssJetWriter@@IEBAPEAPEBGXZ
; protected: unsigned short const *__ptr64 *__ptr64 __cdecl CVssWriter::GetCurrentVolumeArray(void)const __ptr64 
?GetCurrentVolumeArray@CVssWriter@@IEBAPEAPEBGXZ
; protected: unsigned int __cdecl CVssJetWriter::GetCurrentVolumeCount(void)const __ptr64 
?GetCurrentVolumeCount@CVssJetWriter@@IEBAIXZ
; protected: unsigned int __cdecl CVssWriter::GetCurrentVolumeCount(void)const __ptr64 
?GetCurrentVolumeCount@CVssWriter@@IEBAIXZ
; protected: enum _VSS_RESTORE_TYPE __cdecl CVssJetWriter::GetRestoreType(void)const __ptr64 
?GetRestoreType@CVssJetWriter@@IEBA?AW4_VSS_RESTORE_TYPE@@XZ
; protected: enum _VSS_RESTORE_TYPE __cdecl CVssWriter::GetRestoreType(void)const __ptr64 
?GetRestoreType@CVssWriter@@IEBA?AW4_VSS_RESTORE_TYPE@@XZ
; protected: long __cdecl CVssJetWriter::GetSnapshotDeviceName(unsigned short const *__ptr64,unsigned short const *__ptr64 *__ptr64)const __ptr64 
?GetSnapshotDeviceName@CVssJetWriter@@IEBAJPEBGPEAPEBG@Z
; protected: long __cdecl CVssWriter::GetSnapshotDeviceName(unsigned short const *__ptr64,unsigned short const *__ptr64 *__ptr64)const __ptr64 
?GetSnapshotDeviceName@CVssWriter@@IEBAJPEBGPEAPEBG@Z
; public: long __cdecl CVssJetWriter::Initialize(struct _GUID,unsigned short const *__ptr64,bool,bool,unsigned short const *__ptr64,unsigned short const *__ptr64,unsigned long)__ptr64 
?Initialize@CVssJetWriter@@QEAAJU_GUID@@PEBG_N211K@Z
; public: long __cdecl CVssWriter::Initialize(struct _GUID,unsigned short const *__ptr64,enum VSS_USAGE_TYPE,enum VSS_SOURCE_TYPE,enum _VSS_APPLICATION_LEVEL,unsigned long,enum VSS_ALTERNATE_WRITER_STATE,bool,unsigned short const *__ptr64)__ptr64 
?Initialize@CVssWriter@@QEAAJU_GUID@@PEBGW4VSS_USAGE_TYPE@@W4VSS_SOURCE_TYPE@@W4_VSS_APPLICATION_LEVEL@@KW4VSS_ALTERNATE_WRITER_STATE@@_N1@Z
; public: long __cdecl CVssWriter::InstallAlternateWriter(struct _GUID,struct _GUID)__ptr64 
?InstallAlternateWriter@CVssWriter@@QEAAJU_GUID@@0@Z
; protected: bool __cdecl CVssJetWriter::IsBootableSystemStateBackedUp(void)const __ptr64 
?IsBootableSystemStateBackedUp@CVssJetWriter@@IEBA_NXZ
; protected: bool __cdecl CVssWriter::IsBootableSystemStateBackedUp(void)const __ptr64 
?IsBootableSystemStateBackedUp@CVssWriter@@IEBA_NXZ
; protected: bool __cdecl CVssJetWriter::IsPartialFileSupportEnabled(void)const __ptr64 
?IsPartialFileSupportEnabled@CVssJetWriter@@IEBA_NXZ
; protected: bool __cdecl CVssWriter::IsPartialFileSupportEnabled(void)const __ptr64 
?IsPartialFileSupportEnabled@CVssWriter@@IEBA_NXZ
; protected: bool __cdecl CVssJetWriter::IsPathAffected(unsigned short const *__ptr64)const __ptr64 
?IsPathAffected@CVssJetWriter@@IEBA_NPEBG@Z
; protected: bool __cdecl CVssWriter::IsPathAffected(unsigned short const *__ptr64)const __ptr64 
?IsPathAffected@CVssWriter@@IEBA_NPEBG@Z
; long __cdecl LoadVssSnapshotSetDescription(unsigned short const *__ptr64,class IVssSnapshotSetDescription *__ptr64 *__ptr64,struct _GUID)
?LoadVssSnapshotSetDescription@@YAJPEBGPEAPEAVIVssSnapshotSetDescription@@U_GUID@@@Z
; public: virtual void __cdecl CVssJetWriter::OnAbortBegin(void)__ptr64 
?OnAbortBegin@CVssJetWriter@@UEAAXXZ
; public: virtual void __cdecl CVssJetWriter::OnAbortEnd(void)__ptr64 
?OnAbortEnd@CVssJetWriter@@UEAAXXZ
; public: virtual bool __cdecl CVssWriter::OnBackOffIOOnVolume(unsigned short *__ptr64,struct _GUID,struct _GUID)__ptr64 
?OnBackOffIOOnVolume@CVssWriter@@UEAA_NPEAGU_GUID@@1@Z
; public: virtual bool __cdecl CVssWriter::OnBackupComplete(class IVssWriterComponents *__ptr64)__ptr64 
?OnBackupComplete@CVssWriter@@UEAA_NPEAVIVssWriterComponents@@@Z
; public: virtual bool __cdecl CVssJetWriter::OnBackupCompleteBegin(class IVssWriterComponents *__ptr64)__ptr64 
?OnBackupCompleteBegin@CVssJetWriter@@UEAA_NPEAVIVssWriterComponents@@@Z
; public: virtual bool __cdecl CVssJetWriter::OnBackupCompleteEnd(class IVssWriterComponents *__ptr64,bool)__ptr64 
?OnBackupCompleteEnd@CVssJetWriter@@UEAA_NPEAVIVssWriterComponents@@_N@Z
; public: virtual bool __cdecl CVssWriter::OnBackupShutdown(struct _GUID)__ptr64 
?OnBackupShutdown@CVssWriter@@UEAA_NU_GUID@@@Z
; public: virtual bool __cdecl CVssWriter::OnContinueIOOnVolume(unsigned short *__ptr64,struct _GUID,struct _GUID)__ptr64 
?OnContinueIOOnVolume@CVssWriter@@UEAA_NPEAGU_GUID@@1@Z
; public: virtual bool __cdecl CVssJetWriter::OnFreezeBegin(void)__ptr64 
?OnFreezeBegin@CVssJetWriter@@UEAA_NXZ
; public: virtual bool __cdecl CVssJetWriter::OnFreezeEnd(bool)__ptr64 
?OnFreezeEnd@CVssJetWriter@@UEAA_N_N@Z
; public: virtual bool __cdecl CVssJetWriter::OnIdentify(class IVssCreateWriterMetadata *__ptr64)__ptr64 
?OnIdentify@CVssJetWriter@@UEAA_NPEAVIVssCreateWriterMetadata@@@Z
; public: virtual bool __cdecl CVssWriter::OnIdentify(class IVssCreateWriterMetadata *__ptr64)__ptr64 
?OnIdentify@CVssWriter@@UEAA_NPEAVIVssCreateWriterMetadata@@@Z
; public: virtual bool __cdecl CVssWriter::OnPostRestore(class IVssWriterComponents *__ptr64)__ptr64 
?OnPostRestore@CVssWriter@@UEAA_NPEAVIVssWriterComponents@@@Z
; public: virtual bool __cdecl CVssJetWriter::OnPostRestoreBegin(class IVssWriterComponents *__ptr64)__ptr64 
?OnPostRestoreBegin@CVssJetWriter@@UEAA_NPEAVIVssWriterComponents@@@Z
; public: virtual bool __cdecl CVssJetWriter::OnPostRestoreEnd(class IVssWriterComponents *__ptr64,bool)__ptr64 
?OnPostRestoreEnd@CVssJetWriter@@UEAA_NPEAVIVssWriterComponents@@_N@Z
; public: virtual bool __cdecl CVssJetWriter::OnPostSnapshot(class IVssWriterComponents *__ptr64)__ptr64 
?OnPostSnapshot@CVssJetWriter@@UEAA_NPEAVIVssWriterComponents@@@Z
; public: virtual bool __cdecl CVssWriter::OnPostSnapshot(class IVssWriterComponents *__ptr64)__ptr64 
?OnPostSnapshot@CVssWriter@@UEAA_NPEAVIVssWriterComponents@@@Z
; public: virtual bool __cdecl CVssWriter::OnPreRestore(class IVssWriterComponents *__ptr64)__ptr64 
?OnPreRestore@CVssWriter@@UEAA_NPEAVIVssWriterComponents@@@Z
; public: virtual bool __cdecl CVssJetWriter::OnPreRestoreBegin(class IVssWriterComponents *__ptr64)__ptr64 
?OnPreRestoreBegin@CVssJetWriter@@UEAA_NPEAVIVssWriterComponents@@@Z
; public: virtual bool __cdecl CVssJetWriter::OnPreRestoreEnd(class IVssWriterComponents *__ptr64,bool)__ptr64 
?OnPreRestoreEnd@CVssJetWriter@@UEAA_NPEAVIVssWriterComponents@@_N@Z
; public: virtual bool __cdecl CVssWriter::OnPrepareBackup(class IVssWriterComponents *__ptr64)__ptr64 
?OnPrepareBackup@CVssWriter@@UEAA_NPEAVIVssWriterComponents@@@Z
; public: virtual bool __cdecl CVssJetWriter::OnPrepareBackupBegin(class IVssWriterComponents *__ptr64)__ptr64 
?OnPrepareBackupBegin@CVssJetWriter@@UEAA_NPEAVIVssWriterComponents@@@Z
; public: virtual bool __cdecl CVssJetWriter::OnPrepareBackupEnd(class IVssWriterComponents *__ptr64,bool)__ptr64 
?OnPrepareBackupEnd@CVssJetWriter@@UEAA_NPEAVIVssWriterComponents@@_N@Z
; public: virtual bool __cdecl CVssJetWriter::OnPrepareSnapshotBegin(void)__ptr64 
?OnPrepareSnapshotBegin@CVssJetWriter@@UEAA_NXZ
; public: virtual bool __cdecl CVssJetWriter::OnPrepareSnapshotEnd(bool)__ptr64 
?OnPrepareSnapshotEnd@CVssJetWriter@@UEAA_N_N@Z
; public: virtual bool __cdecl CVssJetWriter::OnThawBegin(void)__ptr64 
?OnThawBegin@CVssJetWriter@@UEAA_NXZ
; public: virtual bool __cdecl CVssJetWriter::OnThawEnd(bool)__ptr64 
?OnThawEnd@CVssJetWriter@@UEAA_N_N@Z
; public: virtual bool __cdecl CVssWriter::OnVSSApplicationStartup(void)__ptr64 
?OnVSSApplicationStartup@CVssWriter@@UEAA_NXZ
; public: virtual bool __cdecl CVssWriter::OnVSSShutdown(void)__ptr64 
?OnVSSShutdown@CVssWriter@@UEAA_NXZ
; protected: long __cdecl CVssJetWriter::SetWriterFailure(long)__ptr64 
?SetWriterFailure@CVssJetWriter@@IEAAJJ@Z
; protected: long __cdecl CVssWriter::SetWriterFailure(long)__ptr64 
?SetWriterFailure@CVssWriter@@IEAAJJ@Z
; public: long __cdecl CVssWriter::Subscribe(unsigned long)__ptr64 
?Subscribe@CVssWriter@@QEAAJK@Z
; public: void __cdecl CVssJetWriter::Uninitialize(void)__ptr64 
?Uninitialize@CVssJetWriter@@QEAAXXZ
; public: long __cdecl CVssWriter::Unsubscribe(void)__ptr64 
?Unsubscribe@CVssWriter@@QEAAJXZ
CreateVssBackupComponentsInternal
CreateVssExamineWriterMetadataInternal
CreateVssExpressWriterInternal
CreateWriter
CreateWriterEx
;DllCanUnloadNow
;DllGetClassObject
GetProviderMgmtInterface
GetProviderMgmtInterfaceInternal
IsVolumeSnapshottedInternal
ShouldBlockRevertInternal
VssFreeSnapshotPropertiesInternal
