; 
; Exports of file WIADSS.DLL
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY WIADSS.DLL
EXPORTS
FindFirstImportDS
FindNextImportDS
CloseFindContext
LoadImportDS
UnloadImportDS
GetLoaderStatus
FindImportDSByDeviceName
; public: __cdecl BUFFER::BUFFER(unsigned int) __ptr64
??0BUFFER@@QEAA@I@Z
; public: __cdecl BUFFER_CHAIN::BUFFER_CHAIN(void) __ptr64
??0BUFFER_CHAIN@@QEAA@XZ
; public: __cdecl BUFFER_CHAIN_ITEM::BUFFER_CHAIN_ITEM(unsigned int) __ptr64
??0BUFFER_CHAIN_ITEM@@QEAA@I@Z
; public: __cdecl BUFFER::~BUFFER(void) __ptr64
??1BUFFER@@QEAA@XZ
; public: __cdecl BUFFER_CHAIN::~BUFFER_CHAIN(void) __ptr64
??1BUFFER_CHAIN@@QEAA@XZ
; public: __cdecl BUFFER_CHAIN_ITEM::~BUFFER_CHAIN_ITEM(void) __ptr64
??1BUFFER_CHAIN_ITEM@@QEAA@XZ
; public: void __cdecl BUFFER::`default constructor closure'(void) __ptr64
??_FBUFFER@@QEAAXXZ
; public: void __cdecl BUFFER_CHAIN_ITEM::`default constructor closure'(void) __ptr64
??_FBUFFER_CHAIN_ITEM@@QEAAXXZ
; public: void * __ptr64 __cdecl BUFFER::QueryPtr(void)const  __ptr64
?QueryPtr@BUFFER@@QEBAPEAXXZ
; public: unsigned int __cdecl BUFFER::QuerySize(void)const  __ptr64
?QuerySize@BUFFER@@QEBAIXZ
; public: unsigned long __cdecl BUFFER_CHAIN_ITEM::QueryUsed(void)const  __ptr64
?QueryUsed@BUFFER_CHAIN_ITEM@@QEBAKXZ
; public: void __cdecl BUFFER_CHAIN_ITEM::SetUsed(unsigned long) __ptr64
?SetUsed@BUFFER_CHAIN_ITEM@@QEAAXK@Z
