接上一篇
这次是验证Open*(本文使用OpenMutex函数)的命名对象在继承中安全属性的传递
SECURITY_ATTRIBUTES sa; //设置句柄安全性 sa.nLength = sizeof(sa); sa.lpSecurityDescriptor = NULL; sa.bInheritHandle = TRUE; HANDLE hMutex1 = CreateMutex(&sa, FALSE, TEXT("JeffObj")); //创建对象句柄1 HANDLE hMutex2 = OpenMutex(MUTEX_ALL_ACCESS, FALSE, TEXT("JeffObj")); //继承一个对象句柄2 DWORD dwFlags1; GetHandleInformation(hMutex1, &dwFlags1); //验证对象句柄1的继承性 BOOL fHandleIsInheritable1 = (0 != (dwFlags1 & HANDLE_FLAG_INHERIT)); DWORD dwFlags2; GetHandleInformation(hMutex2, &dwFlags2); //验证对象句柄1的继承性,判断是否继承安全性成功 BOOL fHandleIsInheritable2 = (0 != (dwFlags2 & HANDLE_FLAG_INHERIT)); CloseHandle(hMutex1); CloseHandle(hMutex2);
可以看到dwFlags1和dwFlags2的值不同,所以继承对象句柄中,安全性继承失败