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

Function xnOSCreateSharedMemoryEx

Source/OpenNI/Win32/Win32SharedMemory.cpp:89–152  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

87}
88
89XN_C_API XnStatus XN_C_DECL xnOSCreateSharedMemoryEx(const XnChar* strName, XnUInt32 nSize, XnUInt32 nAccessFlags, XnBool bAllowOtherUsers, XN_SHARED_MEMORY_HANDLE* phSharedMem)
90{
91 XnStatus nRetVal = XN_STATUS_OK;
92
93 XN_VALIDATE_INPUT_PTR(strName);
94 XN_VALIDATE_OUTPUT_PTR(phSharedMem);
95
96 DWORD mapflags;
97 nRetVal = AccessFlagsToWin32MapFlags(nAccessFlags, &mapflags);
98 XN_IS_STATUS_OK(nRetVal);
99
100 DWORD viewflags;
101 nRetVal = AccessFlagsToWin32ViewFlags(nAccessFlags, &viewflags);
102 XN_IS_STATUS_OK(nRetVal);
103
104 XnChar strWinName[XN_FILE_MAX_PATH];
105 nRetVal = XnWin32CreateKernelObjectName(strWinName, MAX_PATH, strName, bAllowOtherUsers);
106 if (nRetVal != XN_STATUS_OK)
107 {
108 return XN_STATUS_OS_EVENT_CREATION_FAILED;
109 }
110
111 SECURITY_ATTRIBUTES* pSecurityAttributes = NULL;
112 nRetVal = XnWin32GetSecurityAttributes(bAllowOtherUsers, &pSecurityAttributes);
113 if (nRetVal != XN_STATUS_OK)
114 {
115 return XN_STATUS_OS_EVENT_CREATION_FAILED;
116 }
117
118 // allocate handle
119 XnOSSharedMemory* pHandle;
120 XN_VALIDATE_CALLOC(pHandle, XnOSSharedMemory, 1);
121
122 // create file mapping
123 pHandle->hMapFile = CreateFileMapping(
124 INVALID_HANDLE_VALUE, // use paging file
125 pSecurityAttributes, // security
126 mapflags, // read/write access
127 0, // max. object size
128 nSize, // buffer size
129 strWinName); // name of mapping object
130
131 if (pHandle->hMapFile == NULL)
132 {
133 XN_LOG_ERROR_RETURN(XN_STATUS_OS_FAILED_TO_CREATE_SHARED_MEMORY, XN_MASK_OS, "Could not create file mapping object (%d).", GetLastError());
134 }
135
136 // map it to the process
137 pHandle->pAddress = MapViewOfFile(
138 pHandle->hMapFile, // handle to map object
139 viewflags, // read/write permission
140 0,
141 0,
142 nSize);
143
144 if (pHandle->pAddress == NULL)
145 {
146 XN_LOG_ERROR_RETURN(XN_STATUS_OS_FAILED_TO_CREATE_SHARED_MEMORY, XN_MASK_OS, "Could not map view of file (%d).", GetLastError());

Callers 1

xnOSCreateSharedMemoryFunction · 0.70

Tested by

no test coverage detected