MCPcopy Create free account
hub / github.com/OpenNI/OpenNI / xnOSOpenSharedMemoryEx

Function xnOSOpenSharedMemoryEx

Source/OpenNI/Win32/Win32SharedMemory.cpp:159–208  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

157}
158
159XN_C_API XnStatus XN_C_DECL xnOSOpenSharedMemoryEx(const XnChar* strName, XnUInt32 nAccessFlags, XnBool bAllowOtherUsers, XN_SHARED_MEMORY_HANDLE* phSharedMem)
160{
161 XnStatus nRetVal = XN_STATUS_OK;
162
163 XN_VALIDATE_INPUT_PTR(strName);
164 XN_VALIDATE_OUTPUT_PTR(phSharedMem);
165
166 DWORD flags;
167 nRetVal = AccessFlagsToWin32ViewFlags(nAccessFlags, &flags);
168 XN_IS_STATUS_OK(nRetVal);
169
170 XnChar strWinName[XN_FILE_MAX_PATH];
171 nRetVal = XnWin32CreateKernelObjectName(strWinName, MAX_PATH, strName, bAllowOtherUsers);
172 if (nRetVal != XN_STATUS_OK)
173 {
174 return XN_STATUS_OS_FAILED_TO_OPEN_SHARED_MEMORY;
175 }
176
177 // allocate handle
178 XnOSSharedMemory* pHandle;
179 XN_VALIDATE_CALLOC(pHandle, XnOSSharedMemory, 1);
180
181 // create file mapping
182 pHandle->hMapFile = OpenFileMapping(
183 flags, // read/write access
184 FALSE, // do not inherit the name
185 strWinName); // name of mapping object
186
187 if (pHandle->hMapFile == NULL)
188 {
189 XN_LOG_ERROR_RETURN(XN_STATUS_OS_FAILED_TO_OPEN_SHARED_MEMORY, XN_MASK_OS, "Could not open file mapping object (%d).", GetLastError());
190 }
191
192 // map it to the process
193 pHandle->pAddress = MapViewOfFile(
194 pHandle->hMapFile, // handle to map object
195 flags, // read/write permission
196 0,
197 0,
198 0);
199
200 if (pHandle->pAddress == NULL)
201 {
202 XN_LOG_ERROR_RETURN(XN_STATUS_OS_FAILED_TO_OPEN_SHARED_MEMORY, XN_MASK_OS, "Could not map view of file (%d).", GetLastError());
203 }
204
205 *phSharedMem = pHandle;
206
207 return (XN_STATUS_OK);
208}
209
210XN_C_API XnStatus xnOSCloseSharedMemory(XN_SHARED_MEMORY_HANDLE hSharedMem)
211{

Callers 1

xnOSOpenSharedMemoryFunction · 0.70

Calls 2

Tested by

no test coverage detected