Index: ext/libicpf/src/callback.cpp
===================================================================
diff -u -r338a33bbdb8c82416f0351408eea3243520784e5 -r79aeaf4a65732f3b3fe6ba19a80651381d6b3362
--- ext/libicpf/src/callback.cpp	(.../callback.cpp)	(revision 338a33bbdb8c82416f0351408eea3243520784e5)
+++ ext/libicpf/src/callback.cpp	(.../callback.cpp)	(revision 79aeaf4a65732f3b3fe6ba19a80651381d6b3362)
@@ -30,16 +30,14 @@
 
 callback_list::callback_list() :
 	m_lock(),
-	m_pStorage(NULL)
+	m_pStorage((void*)new std::vector<CLBDATA>)
 {
-	m_pStorage=(void*)new std::vector<CLBDATA>;
 }
 
 callback_list::callback_list(const callback_list& rSrc) :
 	m_lock(),
-	m_pStorage(NULL)
+	m_pStorage((void*)new std::vector<CLBDATA>)
 {
-	m_pStorage=(void*)new std::vector<CLBDATA>;
 	STORAGE->assign(((std::vector<CLBDATA>*)rSrc.m_pStorage)->begin(), ((std::vector<CLBDATA>*)rSrc.m_pStorage)->end());
 	assert(false);		// we should not use the copy constructor at all !!!
 }
Index: ext/libicpf/src/callback.h
===================================================================
diff -u -r338a33bbdb8c82416f0351408eea3243520784e5 -r79aeaf4a65732f3b3fe6ba19a80651381d6b3362
--- ext/libicpf/src/callback.h	(.../callback.h)	(revision 338a33bbdb8c82416f0351408eea3243520784e5)
+++ ext/libicpf/src/callback.h	(.../callback.h)	(revision 79aeaf4a65732f3b3fe6ba19a80651381d6b3362)
@@ -32,10 +32,10 @@
 BEGIN_ICPF_NAMESPACE
 
 /// General function definition
-typedef void(*PFNFUNC)(void);
+typedef void(__stdcall *PFNFUNC)(void);
 
 /// Helper structure for callback class
-struct CLBDATA
+struct LIBICPF_API CLBDATA
 {
 	PFNFUNC pfn;			///< General function definition
 	ptr_t param;
@@ -80,12 +80,12 @@
 {
 protected:
 	/// Callback1-type callback function
-	typedef R(*PFNCALLBACKPROC1)(ptr_t, P1);
+	typedef R(__stdcall *PFNCALLBACKPROC1)(ptr_t, P1);
 
 public:
 /** \name Construction/destruction */
 /**@{*/
-	callback1() { };	///< Standard constructor
+	callback1()  : callback_list() { };	///< Standard constructor
 	virtual ~callback1() { };	///< Standard destructor
 /**@}*/
 
@@ -137,12 +137,12 @@
 {
 protected:
 	/// Callback2-type callback function
-	typedef R(*PFNCALLBACKPROC2)(ptr_t, P1, P2);
+	typedef R(__stdcall *PFNCALLBACKPROC2)(ptr_t, P1, P2);
 
 public:
 /** \name Construction/destruction */
 /**@{*/
-	callback2() { };	///< Standard constructor
+	callback2() : callback_list() { };	///< Standard constructor
 	virtual ~callback2() { };	///< Standard destructor
 /**@}*/
 
@@ -195,12 +195,12 @@
 {
 protected:
 	/// Callback2-type callback function
-	typedef R(*PFNCALLBACKPROC3)(ptr_t, P1, P2, P3);
+	typedef R(__stdcall *PFNCALLBACKPROC3)(ptr_t, P1, P2, P3);
 
 public:
 /** \name Construction/destruction */
 /**@{*/
-	callback3() { };	///< Standard constructor
+	callback3() : callback_list() { };	///< Standard constructor
 	virtual ~callback3() { };	///< Standard destructor
 /**@}*/