; 
; Exports of file vdsutil.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY vdsutil.dll
EXPORTS
; public: __cdecl CVdsHandleImpl<-1>::CVdsHandleImpl<-1>(void) __ptr64
??0?$CVdsHandleImpl@$0?0@@QEAA@XZ
; public: __cdecl CVdsHeapPtr<struct _MOUNTMGR_MOUNT_POINT>::CVdsHeapPtr<struct _MOUNTMGR_MOUNT_POINT>(void) __ptr64
??0?$CVdsHeapPtr@U_MOUNTMGR_MOUNT_POINT@@@@QEAA@XZ
; public: __cdecl CVdsHeapPtr<struct _MOUNTMGR_MOUNT_POINTS>::CVdsHeapPtr<struct _MOUNTMGR_MOUNT_POINTS>(void) __ptr64
??0?$CVdsHeapPtr@U_MOUNTMGR_MOUNT_POINTS@@@@QEAA@XZ
; public: __cdecl CVdsPtr<struct _MOUNTMGR_MOUNT_POINT>::CVdsPtr<struct _MOUNTMGR_MOUNT_POINT>(void) __ptr64
??0?$CVdsPtr@U_MOUNTMGR_MOUNT_POINT@@@@QEAA@XZ
; public: __cdecl CVdsPtr<struct _MOUNTMGR_MOUNT_POINTS>::CVdsPtr<struct _MOUNTMGR_MOUNT_POINTS>(void) __ptr64
??0?$CVdsPtr@U_MOUNTMGR_MOUNT_POINTS@@@@QEAA@XZ
; public: __cdecl CPrvEnumObject::CPrvEnumObject(void) __ptr64
??0CPrvEnumObject@@QEAA@XZ
; public: __cdecl CVdsAsyncObjectBase::CVdsAsyncObjectBase(void) __ptr64
??0CVdsAsyncObjectBase@@QEAA@XZ
; public: __cdecl CVdsCallTracer::CVdsCallTracer(unsigned long,char const * __ptr64) __ptr64
??0CVdsCallTracer@@QEAA@KPEBD@Z
; public: __cdecl CVdsCriticalSection::CVdsCriticalSection(struct _RTL_CRITICAL_SECTION * __ptr64) __ptr64
??0CVdsCriticalSection@@QEAA@PEAU_RTL_CRITICAL_SECTION@@@Z
; public: __cdecl CVdsDebugLog::CVdsDebugLog(int) __ptr64
??0CVdsDebugLog@@QEAA@H@Z
; public: __cdecl CVdsPnPNotificationBase::CVdsPnPNotificationBase(void) __ptr64
??0CVdsPnPNotificationBase@@QEAA@XZ
; public: __cdecl CVdsStructuredExceptionTranslator::CVdsStructuredExceptionTranslator(void) __ptr64
??0CVdsStructuredExceptionTranslator@@QEAA@XZ
; public: __cdecl CVdsUnlockIt::CVdsUnlockIt(long & __ptr64) __ptr64
??0CVdsUnlockIt@@QEAA@AEAJ@Z
; public: __cdecl CVdsHandleImpl<-1>::~CVdsHandleImpl<-1>(void) __ptr64
??1?$CVdsHandleImpl@$0?0@@QEAA@XZ
; public: __cdecl CVdsHeapPtr<struct _MOUNTMGR_MOUNT_POINT>::~CVdsHeapPtr<struct _MOUNTMGR_MOUNT_POINT>(void) __ptr64
??1?$CVdsHeapPtr@U_MOUNTMGR_MOUNT_POINT@@@@QEAA@XZ
; public: __cdecl CVdsHeapPtr<struct _MOUNTMGR_MOUNT_POINTS>::~CVdsHeapPtr<struct _MOUNTMGR_MOUNT_POINTS>(void) __ptr64
??1?$CVdsHeapPtr@U_MOUNTMGR_MOUNT_POINTS@@@@QEAA@XZ
; public: __cdecl CVdsPtr<struct _MOUNTMGR_MOUNT_POINT>::~CVdsPtr<struct _MOUNTMGR_MOUNT_POINT>(void) __ptr64
??1?$CVdsPtr@U_MOUNTMGR_MOUNT_POINT@@@@QEAA@XZ
; public: __cdecl CVdsPtr<struct _MOUNTMGR_MOUNT_POINTS>::~CVdsPtr<struct _MOUNTMGR_MOUNT_POINTS>(void) __ptr64
??1?$CVdsPtr@U_MOUNTMGR_MOUNT_POINTS@@@@QEAA@XZ
; public: __cdecl CPrvEnumObject::~CPrvEnumObject(void) __ptr64
??1CPrvEnumObject@@QEAA@XZ
; public: __cdecl CVdsAsyncObjectBase::~CVdsAsyncObjectBase(void) __ptr64
??1CVdsAsyncObjectBase@@QEAA@XZ
; public: __cdecl CVdsCallTracer::~CVdsCallTracer(void) __ptr64
??1CVdsCallTracer@@QEAA@XZ
; public: __cdecl CVdsCriticalSection::~CVdsCriticalSection(void) __ptr64
??1CVdsCriticalSection@@QEAA@XZ
; public: __cdecl CVdsDebugLog::~CVdsDebugLog(void) __ptr64
??1CVdsDebugLog@@QEAA@XZ
; public: __cdecl CVdsPnPNotificationBase::~CVdsPnPNotificationBase(void) __ptr64
??1CVdsPnPNotificationBase@@QEAA@XZ
; public: __cdecl CVdsStructuredExceptionTranslator::~CVdsStructuredExceptionTranslator(void) __ptr64
??1CVdsStructuredExceptionTranslator@@QEAA@XZ
; public: __cdecl CVdsUnlockIt::~CVdsUnlockIt(void) __ptr64
??1CVdsUnlockIt@@QEAA@XZ
; public: void * __ptr64 __cdecl CVdsHandleImpl<-1>::operator=(void * __ptr64) __ptr64
??4?$CVdsHandleImpl@$0?0@@QEAAPEAXPEAX@Z
; public: struct _MOUNTMGR_MOUNT_POINT * __ptr64 __cdecl CVdsHeapPtr<struct _MOUNTMGR_MOUNT_POINT>::operator=(struct _MOUNTMGR_MOUNT_POINT * __ptr64) __ptr64
??4?$CVdsHeapPtr@U_MOUNTMGR_MOUNT_POINT@@@@QEAAPEAU_MOUNTMGR_MOUNT_POINT@@PEAU1@@Z
; public: struct _MOUNTMGR_MOUNT_POINTS * __ptr64 __cdecl CVdsHeapPtr<struct _MOUNTMGR_MOUNT_POINTS>::operator=(struct _MOUNTMGR_MOUNT_POINTS * __ptr64) __ptr64
??4?$CVdsHeapPtr@U_MOUNTMGR_MOUNT_POINTS@@@@QEAAPEAU_MOUNTMGR_MOUNT_POINTS@@PEAU1@@Z
; public: bool __cdecl CVdsHandleImpl<-1>::operator==(void * __ptr64)const  __ptr64
??8?$CVdsHandleImpl@$0?0@@QEBA_NPEAX@Z
; public: bool __cdecl CVdsPtr<struct _MOUNTMGR_MOUNT_POINT>::operator==(struct _MOUNTMGR_MOUNT_POINT * __ptr64)const  __ptr64
??8?$CVdsPtr@U_MOUNTMGR_MOUNT_POINT@@@@QEBA_NPEAU_MOUNTMGR_MOUNT_POINT@@@Z
; public: bool __cdecl CVdsPtr<struct _MOUNTMGR_MOUNT_POINTS>::operator==(struct _MOUNTMGR_MOUNT_POINTS * __ptr64)const  __ptr64
??8?$CVdsPtr@U_MOUNTMGR_MOUNT_POINTS@@@@QEBA_NPEAU_MOUNTMGR_MOUNT_POINTS@@@Z
; public: __cdecl CVdsHandleImpl<-1>::operator void * __ptr64(void) __ptr64
??B?$CVdsHandleImpl@$0?0@@QEAAPEAXXZ
; public: __cdecl CVdsPtr<struct _MOUNTMGR_MOUNT_POINT>::operator struct _MOUNTMGR_MOUNT_POINT * __ptr64(void)const  __ptr64
??B?$CVdsPtr@U_MOUNTMGR_MOUNT_POINT@@@@QEBAPEAU_MOUNTMGR_MOUNT_POINT@@XZ
; public: __cdecl CVdsPtr<struct _MOUNTMGR_MOUNT_POINTS>::operator struct _MOUNTMGR_MOUNT_POINTS * __ptr64(void)const  __ptr64
??B?$CVdsPtr@U_MOUNTMGR_MOUNT_POINTS@@@@QEBAPEAU_MOUNTMGR_MOUNT_POINTS@@XZ
; public: struct _MOUNTMGR_MOUNT_POINT * __ptr64 __cdecl CVdsPtr<struct _MOUNTMGR_MOUNT_POINT>::operator->(void)const  __ptr64
??C?$CVdsPtr@U_MOUNTMGR_MOUNT_POINT@@@@QEBAPEAU_MOUNTMGR_MOUNT_POINT@@XZ
; public: struct _MOUNTMGR_MOUNT_POINTS * __ptr64 __cdecl CVdsPtr<struct _MOUNTMGR_MOUNT_POINTS>::operator->(void)const  __ptr64
??C?$CVdsPtr@U_MOUNTMGR_MOUNT_POINTS@@@@QEBAPEAU_MOUNTMGR_MOUNT_POINTS@@XZ
; public: void * __ptr64 * __ptr64 __cdecl CVdsHandleImpl<-1>::operator&(void) __ptr64
??I?$CVdsHandleImpl@$0?0@@QEAAPEAPEAXXZ
; bool __cdecl operator<(struct _GUID const & __ptr64,struct _GUID const & __ptr64)
??M@YA_NAEBU_GUID@@0@Z
; unsigned long __cdecl AddEventSource(unsigned short * __ptr64,struct HINSTANCE__ * __ptr64)
?AddEventSource@@YAKPEAGPEAUHINSTANCE__@@@Z
; public: void __cdecl CVdsAsyncObjectBase::AllowCancel(void) __ptr64
?AllowCancel@CVdsAsyncObjectBase@@QEAAXXZ
; public: long __cdecl CPrvEnumObject::Append(struct IUnknown * __ptr64) __ptr64
?Append@CPrvEnumObject@@QEAAJPEAUIUnknown@@@Z
; long __cdecl AssignTempVolumeName(unsigned short * __ptr64,unsigned short * __ptr64 const)
?AssignTempVolumeName@@YAJPEAGQEAG@Z
; public: virtual long __cdecl CVdsAsyncObjectBase::Cancel(void) __ptr64
?Cancel@CVdsAsyncObjectBase@@UEAAJXZ
; public: void __cdecl CPrvEnumObject::Clear(void) __ptr64
?Clear@CPrvEnumObject@@QEAAXXZ
; public: virtual long __cdecl CPrvEnumObject::Clone(struct IEnumVdsObject * __ptr64 * __ptr64) __ptr64
?Clone@CPrvEnumObject@@UEAAJPEAPEAUIEnumVdsObject@@@Z
; void __cdecl CoFreeStringArray(unsigned short * __ptr64 * __ptr64,long)
?CoFreeStringArray@@YAXPEAPEAGJ@Z
; unsigned long __cdecl CreateDeviceInfoSet(unsigned short * __ptr64,void * __ptr64 * __ptr64,struct _SP_DEVINFO_DATA * __ptr64)
?CreateDeviceInfoSet@@YAKPEAGPEAPEAXPEAU_SP_DEVINFO_DATA@@@Z
; private: unsigned long __cdecl CVdsPnPNotificationBase::CreateListenThread(void) __ptr64
?CreateListenThread@CVdsPnPNotificationBase@@AEAAKXZ
; public: void * __ptr64 __cdecl CVdsHandleImpl<-1>::Detach(void) __ptr64
?Detach@?$CVdsHandleImpl@$0?0@@QEAAPEAXXZ
; public: void __cdecl CVdsAsyncObjectBase::DisallowCancel(void) __ptr64
?DisallowCancel@CVdsAsyncObjectBase@@QEAAXXZ
; void __cdecl GarbageCollectDriveLetters(void)
?GarbageCollectDriveLetters@@YAXXZ
; unsigned long __cdecl GetDeviceAndMediaType(void * __ptr64,unsigned long * __ptr64,unsigned long * __ptr64)
?GetDeviceAndMediaType@@YAKPEAXPEAK1@Z
; unsigned long __cdecl GetDeviceLocation(void * __ptr64,struct _VDS_DISK_PROP * __ptr64)
?GetDeviceLocation@@YAKPEAXPEAU_VDS_DISK_PROP@@@Z
; unsigned long __cdecl GetDeviceName(void * __ptr64,int,unsigned short * __ptr64 const)
?GetDeviceName@@YAKPEAXHQEAG@Z
; unsigned long __cdecl GetDeviceNumber(void * __ptr64,struct _STORAGE_DEVICE_NUMBER * __ptr64)
?GetDeviceNumber@@YAKPEAXPEAU_STORAGE_DEVICE_NUMBER@@@Z
; unsigned long __cdecl GetDeviceRegistryProperty(unsigned long,unsigned long,unsigned char * __ptr64 * __ptr64,unsigned long)
?GetDeviceRegistryProperty@@YAKKKPEAPEAEK@Z
; unsigned long __cdecl GetDeviceRegistryProperty(void * __ptr64,struct _SP_DEVINFO_DATA * __ptr64,unsigned long,unsigned char * __ptr64 * __ptr64,unsigned long)
?GetDeviceRegistryProperty@@YAKPEAXPEAU_SP_DEVINFO_DATA@@KPEAPEAEK@Z
; unsigned long __cdecl GetDiskLayout(void * __ptr64,struct _DRIVE_LAYOUT_INFORMATION_EX * __ptr64 * __ptr64)
?GetDiskLayout@@YAKPEAXPEAPEAU_DRIVE_LAYOUT_INFORMATION_EX@@@Z
; unsigned long __cdecl GetInterfaceDetailData(void * __ptr64,struct _SP_DEVICE_INTERFACE_DATA * __ptr64,struct _SP_DEVICE_INTERFACE_DETAIL_DATA_W * __ptr64 * __ptr64)
?GetInterfaceDetailData@@YAKPEAXPEAU_SP_DEVICE_INTERFACE_DATA@@PEAPEAU_SP_DEVICE_INTERFACE_DETAIL_DATA_W@@@Z
; unsigned long __cdecl GetIsRemovable(void * __ptr64,int * __ptr64)
?GetIsRemovable@@YAKPEAXPEAH@Z
; unsigned long __cdecl GetMediaGeometry(void * __ptr64,unsigned long,struct _DISK_GEOMETRY * __ptr64)
?GetMediaGeometry@@YAKPEAXKPEAU_DISK_GEOMETRY@@@Z
; unsigned long __cdecl GetMediaGeometry(void * __ptr64,struct _VDS_DISK_PROP * __ptr64)
?GetMediaGeometry@@YAKPEAXPEAU_VDS_DISK_PROP@@@Z
; public: enum __MIDL___MIDL_itf_vdscmlyr_0000_0002  __cdecl CVdsAsyncObjectBase::GetOutputType(void) __ptr64
?GetOutputType@CVdsAsyncObjectBase@@QEAA?AW4__MIDL___MIDL_itf_vdscmlyr_0000_0002@@XZ
; unsigned long __cdecl GetPartitionInformation(void * __ptr64,struct _PARTITION_INFORMATION_EX * __ptr64)
?GetPartitionInformation@@YAKPEAXPEAU_PARTITION_INFORMATION_EX@@@Z
; unsigned long __cdecl GetVolumeDiskExtentInfo(void * __ptr64,struct _VOLUME_DISK_EXTENTS * __ptr64 * __ptr64)
?GetVolumeDiskExtentInfo@@YAKPEAXPEAPEAU_VOLUME_DISK_EXTENTS@@@Z
; long __cdecl GetVolumeName(unsigned short * __ptr64,unsigned short * __ptr64)
?GetVolumeName@@YAJPEAG0@Z
; unsigned long __cdecl GetVolumeSize(unsigned short * __ptr64,unsigned __int64 * __ptr64)
?GetVolumeSize@@YAKPEAGPEA_K@Z
; public: struct HWND__ * __ptr64 __cdecl CVdsPnPNotificationBase::GetWindowHandle(void) __ptr64
?GetWindowHandle@CVdsPnPNotificationBase@@QEAAPEAUHWND__@@XZ
; protected: int __cdecl CVdsPnPNotificationBase::HasMatchingNotification(unsigned __int64,unsigned long) __ptr64
?HasMatchingNotification@CVdsPnPNotificationBase@@IEAAH_KK@Z
; public: static unsigned long __cdecl CVdsAsyncObjectBase::Initialize(void)
?Initialize@CVdsAsyncObjectBase@@SAKXZ
; public: unsigned long __cdecl CVdsPnPNotificationBase::Initialize(void) __ptr64
?Initialize@CVdsPnPNotificationBase@@QEAAKXZ
; unsigned long __cdecl InitializeSecurityDescriptor(unsigned long,void * __ptr64,struct _ACL * __ptr64 * __ptr64,void * __ptr64 * __ptr64,void * __ptr64 * __ptr64,void * __ptr64 * __ptr64)
?InitializeSecurityDescriptor@@YAKKPEAXPEAPEAU_ACL@@PEAPEAX22@Z
; public: int __cdecl CVdsAsyncObjectBase::IsCancelRequested(void) __ptr64
?IsCancelRequested@CVdsAsyncObjectBase@@QEAAHXZ
; int __cdecl IsDeviceFullyInstalled(unsigned short * __ptr64)
?IsDeviceFullyInstalled@@YAHPEAG@Z
; int __cdecl IsDiskClustered(void * __ptr64)
?IsDiskClustered@@YAHPEAX@Z
; public: int __cdecl CVdsAsyncObjectBase::IsFinished(void) __ptr64
?IsFinished@CVdsAsyncObjectBase@@QEAAHXZ
; long __cdecl IsLocalComputer(unsigned short * __ptr64)
?IsLocalComputer@@YAJPEAG@Z
; int __cdecl IsMediaPresent(void * __ptr64)
?IsMediaPresent@@YAHPEAX@Z
; int __cdecl IsNoAutoMount(void)
?IsNoAutoMount@@YAHXZ
; int __cdecl IsWinPE(void)
?IsWinPE@@YAHXZ
; unsigned long __cdecl LockDismountVolume(void * __ptr64,int)
?LockDismountVolume@@YAKPEAXH@Z
; unsigned long __cdecl LockVolume(void * __ptr64)
?LockVolume@@YAKPEAX@Z
; public: void __cdecl CVdsDebugLog::Log(unsigned long,unsigned long,int,char * __ptr64,char * __ptr64) __ptr64
?Log@CVdsDebugLog@@QEAAXKKHPEAD0@Z
; public: void __cdecl CVdsDebugLog::Log(unsigned long,unsigned long,int,char * __ptr64,...) __ptr64
?Log@CVdsDebugLog@@QEAAXKKHPEADZZ
; void __cdecl LogError(unsigned short * __ptr64,unsigned long,unsigned long,void * __ptr64,unsigned long,unsigned long,unsigned short * __ptr64,char * __ptr64)
?LogError@@YAXPEAGKKPEAXKK0PEAD@Z
; void __cdecl LogEvent(unsigned short * __ptr64,unsigned long,unsigned short,unsigned long,void * __ptr64,unsigned long,unsigned short * __ptr64 * __ptr64 const)
?LogEvent@@YAXPEAGKGKPEAXKQEAPEAG@Z
; void __cdecl LogInfo(unsigned short * __ptr64,unsigned long,unsigned long,void * __ptr64,unsigned long,unsigned short * __ptr64,char * __ptr64)
?LogInfo@@YAXPEAGKKPEAXK0PEAD@Z
; void __cdecl LogWarning(unsigned short * __ptr64,unsigned long,unsigned long,void * __ptr64,unsigned long,unsigned long,unsigned short * __ptr64,char * __ptr64)
?LogWarning@@YAXPEAGKKPEAXKK0PEAD@Z
; unsigned long __cdecl MountVolume(unsigned short * __ptr64)
?MountVolume@@YAKPEAG@Z
; public: virtual long __cdecl CPrvEnumObject::Next(unsigned long,struct IUnknown * __ptr64 * __ptr64,unsigned long * __ptr64) __ptr64
?Next@CPrvEnumObject@@UEAAJKPEAPEAUIUnknown@@PEAK@Z
; private: unsigned long __cdecl CVdsPnPNotificationBase::NotificationThread(void * __ptr64) __ptr64
?NotificationThread@CVdsPnPNotificationBase@@AEAAKPEAX@Z
; private: static unsigned long __cdecl CVdsPnPNotificationBase::NotificationThreadEntry(void * __ptr64)
?NotificationThreadEntry@CVdsPnPNotificationBase@@CAKPEAX@Z
; unsigned long __cdecl OpenDevice(unsigned short * __ptr64,unsigned long,void * __ptr64 * __ptr64)
?OpenDevice@@YAKPEAGKPEAPEAX@Z
; long __cdecl QueryObjects(struct IUnknown * __ptr64,struct IEnumVdsObject * __ptr64 * __ptr64,struct _RTL_CRITICAL_SECTION & __ptr64)
?QueryObjects@@YAJPEAUIUnknown@@PEAPEAUIEnumVdsObject@@AEAU_RTL_CRITICAL_SECTION@@@Z
; public: virtual long __cdecl CVdsAsyncObjectBase::QueryStatus(long * __ptr64,unsigned long * __ptr64) __ptr64
?QueryStatus@CVdsAsyncObjectBase@@UEAAJPEAJPEAK@Z
; public: unsigned long __cdecl CVdsPnPNotificationBase::Register(struct _NotificationListeningRequest * __ptr64,unsigned long) __ptr64
?Register@CVdsPnPNotificationBase@@QEAAKPEAU_NotificationListeningRequest@@K@Z
; public: unsigned long __cdecl CVdsPnPNotificationBase::RegisterHandle(void * __ptr64,void * __ptr64 * __ptr64) __ptr64
?RegisterHandle@CVdsPnPNotificationBase@@QEAAKPEAXPEAPEAX@Z
; long __cdecl RegisterProvider(struct _GUID,struct _GUID,unsigned short * __ptr64,enum _VDS_PROVIDER_TYPE,unsigned short * __ptr64,unsigned short * __ptr64,struct _GUID)
?RegisterProvider@@YAJU_GUID@@0PEAGW4_VDS_PROVIDER_TYPE@@110@Z
; unsigned long __cdecl RemoveEventSource(unsigned short * __ptr64)
?RemoveEventSource@@YAKPEAG@Z
; void __cdecl RemoveTempVolumeName(unsigned short * __ptr64,unsigned short * __ptr64)
?RemoveTempVolumeName@@YAXPEAG0@Z
; public: virtual long __cdecl CPrvEnumObject::Reset(void) __ptr64
?Reset@CPrvEnumObject@@UEAAJXZ
; public: void __cdecl CVdsAsyncObjectBase::SetCompletionStatus(long,unsigned long) __ptr64
?SetCompletionStatus@CVdsAsyncObjectBase@@QEAAXJK@Z
; unsigned long __cdecl SetDiskLayout(void * __ptr64,struct _DRIVE_LAYOUT_INFORMATION_EX * __ptr64)
?SetDiskLayout@@YAKPEAXPEAU_DRIVE_LAYOUT_INFORMATION_EX@@@Z
; public: void __cdecl CVdsAsyncObjectBase::SetOutputType(enum __MIDL___MIDL_itf_vdscmlyr_0000_0002) __ptr64
?SetOutputType@CVdsAsyncObjectBase@@QEAAXW4__MIDL___MIDL_itf_vdscmlyr_0000_0002@@@Z
; public: void __cdecl CPrvEnumObject::SetPositionToLast(void) __ptr64
?SetPositionToLast@CPrvEnumObject@@QEAAXXZ
; public: void __cdecl CVdsAsyncObjectBase::Signal(void) __ptr64
?Signal@CVdsAsyncObjectBase@@QEAAXXZ
; public: virtual long __cdecl CPrvEnumObject::Skip(unsigned long) __ptr64
?Skip@CPrvEnumObject@@UEAAJK@Z
; public: int __cdecl CVdsDebugLog::TracingLogEnabled(void) __ptr64
?TracingLogEnabled@CVdsDebugLog@@QEAAHXZ
; public: static void __cdecl CVdsAsyncObjectBase::Uninitialize(void)
?Uninitialize@CVdsAsyncObjectBase@@SAXXZ
; public: void __cdecl CVdsPnPNotificationBase::Uninitialize(void) __ptr64
?Uninitialize@CVdsPnPNotificationBase@@QEAAXXZ
; public: void __cdecl CVdsPnPNotificationBase::Unregister(struct _NotificationListeningRequest * __ptr64) __ptr64
?Unregister@CVdsPnPNotificationBase@@QEAAXPEAU_NotificationListeningRequest@@@Z
; public: void __cdecl CVdsPnPNotificationBase::UnregisterHandle(void * __ptr64) __ptr64
?UnregisterHandle@CVdsPnPNotificationBase@@QEAAXPEAX@Z
; long __cdecl UnregisterProvider(struct _GUID)
?UnregisterProvider@@YAJU_GUID@@@Z
; unsigned short * __ptr64 __cdecl VdsAllocateEmptyString(void)
?VdsAllocateEmptyString@@YAPEAGXZ
; void * __ptr64 __cdecl VdsHeapAlloc(void * __ptr64,unsigned long,unsigned __int64)
?VdsHeapAlloc@@YAPEAXPEAXK_K@Z
; int __cdecl VdsHeapFree(void * __ptr64,unsigned long,void * __ptr64)
?VdsHeapFree@@YAHPEAXK0@Z
; unsigned long __cdecl VdsInitializeCriticalSection(struct _RTL_CRITICAL_SECTION * __ptr64)
?VdsInitializeCriticalSection@@YAKPEAU_RTL_CRITICAL_SECTION@@@Z
; public: static void __cdecl CVdsStructuredExceptionTranslator::VdsSeTranslator(unsigned int,struct _EXCEPTION_POINTERS * __ptr64)
?VdsSeTranslator@CVdsStructuredExceptionTranslator@@SAXIPEAU_EXCEPTION_POINTERS@@@Z
; void __cdecl VdsTrace(unsigned long,char * __ptr64,...)
?VdsTrace@@YAXKPEADZZ
; void __cdecl VdsTraceEx(unsigned long,unsigned long,char * __ptr64,...)
?VdsTraceEx@@YAXKKPEADZZ
; void __cdecl VdsTraceExHelper(unsigned long,unsigned long,char * __ptr64,char * __ptr64)
?VdsTraceExHelper@@YAXKKPEAD0@Z
; void __cdecl VdsTraceExW(unsigned long,unsigned long,unsigned short * __ptr64,...)
?VdsTraceExW@@YAXKKPEAGZZ
; void __cdecl VdsTraceExWHelper(unsigned long,unsigned long,unsigned short * __ptr64,char * __ptr64)
?VdsTraceExWHelper@@YAXKKPEAGPEAD@Z
; void __cdecl VdsTraceW(unsigned long,unsigned short * __ptr64,...)
?VdsTraceW@@YAXKPEAGZZ
; public: long __cdecl CVdsAsyncObjectBase::WaitImpl(long * __ptr64) __ptr64
?WaitImpl@CVdsAsyncObjectBase@@QEAAJPEAJ@Z
; private: static __int64 __cdecl CVdsPnPNotificationBase::WindowProcEntry(struct HWND__ * __ptr64,unsigned int,unsigned __int64,__int64)
?WindowProcEntry@CVdsPnPNotificationBase@@CA_JPEAUHWND__@@I_K_J@Z
; public: void __cdecl CVdsAsyncObjectBase::ZeroAsyncOut(void) __ptr64
?ZeroAsyncOut@CVdsAsyncObjectBase@@QEAAXXZ
DllMain
RegisterVdsFabric
UnregisterVdsFabric
