Index: src/libchcore/TSharedMemory.cpp
===================================================================
diff -u -N -r0d5b67ee96b435d63f7bf075dc8e28603793b187 -r776c47d61a5a67d5e2541d58013e221c685460ec
--- src/libchcore/TSharedMemory.cpp	(.../TSharedMemory.cpp)	(revision 0d5b67ee96b435d63f7bf075dc8e28603793b187)
+++ src/libchcore/TSharedMemory.cpp	(.../TSharedMemory.cpp)	(revision 776c47d61a5a67d5e2541d58013e221c685460ec)
@@ -95,6 +95,9 @@
 
 	void TSharedMemory::Create(const wchar_t* pszName, const BYTE* pbyData, shm_size_t stSize)
 	{
+		if (!pbyData)
+			throw TCoreException(eErr_InvalidArgument, L"pbyData is NULL", LOCATION);
+
 		Create(pszName, stSize);
 
 		TIpcMutexLock lock(m_mutex);
@@ -203,6 +206,14 @@
 		return (BYTE*)m_pMappedMemory + sizeof(shm_size_t);
 	}
 
+	const BYTE* TSharedMemory::GetFullData() const
+	{
+		if (!m_hFileMapping || !m_pMappedMemory || m_stSize <= sizeof(shm_size_t))
+			return nullptr;
+
+		return (BYTE*)m_pMappedMemory;
+	}
+
 	TSharedMemory::shm_size_t TSharedMemory::GetSharedMemorySize() const
 	{
 		if (!m_hFileMapping || !m_pMappedMemory)