namespace sandbox { // The section for IPC and policy.
SANDBOX_INTERCEPT HANDLE g_shared_section; staticbool s_is_broker = false;
// GetBrokerServices: the current implementation relies on a shared section // that is created by the broker and opened by the target.
BrokerServices* SandboxFactory::GetBrokerServices() { // Can't be the broker if the shared section is open.
if (g_shared_section) return nullptr; // If the shared section does not exist we are the broker, then create // the broker object.
s_is_broker = true; return BrokerServicesBase::GetInstance();
}
// GetTargetServices implementation must follow the same technique as the // GetBrokerServices, but in this case the logic is the opposite.
TargetServices* SandboxFactory::GetTargetServices() { // Can't be the target if the section handle is not valid.
if (!g_shared_section) return nullptr; // We are the target
s_is_broker = false; // Creates and returns the target services implementation. return TargetServicesBase::GetInstance();
}
} // namespace sandbox
// Allows querying for whether the current process has been sandboxed.
extern "C"bool __declspec(dllexport) IsSandboxedProcess() { return !!sandbox::g_shared_section;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.