/* WPP doesn't want here literals! */\r
uint32_t g_nd_dbg_flags = 0x80000001; /* ND_DBG_ERROR | ND_DBG_NDI; */\r
\r
+HANDLE ghHeap;\r
+\r
+\r
namespace NetworkDirect\r
{\r
\r
size_t count\r
)\r
{\r
- return HeapAlloc( GetProcessHeap(), 0, count );\r
+ return HeapAlloc( ghHeap, 0, count );\r
}\r
\r
\r
void* object\r
)\r
{\r
- HeapFree( GetProcessHeap(), 0, object );\r
+ HeapFree( ghHeap, 0, object );\r
}\r
\r
extern "C" {\r
#else\r
WPP_INIT_TRACING(L"ibndprov.dll");\r
#endif\r
-#endif\r
-\r
-\r
-#if !defined(EVENT_TRACING)\r
-#if DBG \r
+#elif DBG \r
TCHAR env_var[16];\r
DWORD i;\r
\r
ND_PRINT( TRACE_LEVEL_ERROR, ND_DBG_ERR ,\r
("(pcs %#x) IbNdProv: Debug print: level:%d, flags 0x%x\n",\r
GetCurrentProcessId(), g_nd_dbg_level ,g_nd_dbg_flags) );\r
-\r
#endif\r
+\r
+ ghHeap = HeapCreate( 0, 0, 0 );\r
+ if( ghHeap == NULL )\r
+ {\r
+ ND_PRINT_EXIT(\r
+ TRACE_LEVEL_ERROR, ND_DBG_NDI, ("Failed to allocate private heap.\n") );\r
+#if defined(EVENT_TRACING)\r
+ WPP_CLEANUP();\r
#endif\r
+ return FALSE;\r
+ }\r
\r
ND_PRINT(TRACE_LEVEL_INFORMATION, ND_DBG_NDI, ("DllMain: DLL_PROCESS_ATTACH\n") );\r
break;\r
\r
case DLL_PROCESS_DETACH:\r
+ HeapDestroy( ghHeap );\r
ND_PRINT(TRACE_LEVEL_INFORMATION, ND_DBG_NDI,\r
("DllMain: DLL_PROCESS_DETACH, ref count %d\n", NetworkDirect::gnRef) );\r
\r