Index: /trunk/src/VBox/Main/src-server/HostDnsService.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/HostDnsService.cpp	(revision 55199)
+++ /trunk/src/VBox/Main/src-server/HostDnsService.cpp	(revision 55200)
@@ -38,33 +38,4 @@
 static void dumpHostDnsStrVector(const std::string&, const std::vector<std::string>&);
 
-/* Lockee */
-Lockee::Lockee()
-{
-    RTCritSectInit(&mLock);
-}
-
-Lockee::~Lockee()
-{
-    RTCritSectDelete(&mLock);
-}
-
-const RTCRITSECT* Lockee::lock() const
-{
-    return &mLock;
-}
-
-/* ALock */
-ALock::ALock(const Lockee *aLockee)
-  : lockee(aLockee)
-{
-    RTCritSectEnter(const_cast<PRTCRITSECT>(lockee->lock()));
-}
-
-ALock::~ALock()
-{
-    RTCritSectLeave(const_cast<PRTCRITSECT>(lockee->lock()));
-}
-
-/* HostDnsInformation */
 
 bool HostDnsInformation::equals(const HostDnsInformation &info) const
@@ -165,5 +136,5 @@
 void HostDnsMonitor::addMonitorProxy(PCHostDnsMonitorProxy proxy) const
 {
-    ALock l(this);
+    RTCLock grab(m_LockMtx);
     m->proxies.push_back(proxy);
     proxy->notify();
@@ -172,5 +143,5 @@
 void HostDnsMonitor::releaseMonitorProxy(PCHostDnsMonitorProxy proxy) const
 {
-    ALock l(this);
+    RTCLock grab(m_LockMtx);
     std::vector<PCHostDnsMonitorProxy>::iterator it;
     it = std::find(m->proxies.begin(), m->proxies.end(), proxy);
@@ -198,5 +169,5 @@
 void HostDnsMonitor::setInfo(const HostDnsInformation &info)
 {
-    ALock l(this);
+    RTCLock grab(m_LockMtx);
 
     if (info.equals(m->info))
@@ -279,5 +250,5 @@
 {
     AssertReturn(m && m->info, E_FAIL);
-    ALock l(this);
+    RTCLock grab(m_LockMtx);
 
     if (m->fModified)
@@ -295,5 +266,5 @@
 {
     AssertReturn(m && m->info, E_FAIL);
-    ALock l(this);
+    RTCLock grab(m_LockMtx);
 
     if (m->fModified)
@@ -311,5 +282,5 @@
 {
     AssertReturn(m && m->info, E_FAIL);
-    ALock l(this);
+    RTCLock grab(m_LockMtx);
 
     if (m->fModified)
Index: /trunk/src/VBox/Main/src-server/HostDnsService.h
===================================================================
--- /trunk/src/VBox/Main/src-server/HostDnsService.h	(revision 55199)
+++ /trunk/src/VBox/Main/src-server/HostDnsService.h	(revision 55200)
@@ -21,6 +21,6 @@
 
 #include <iprt/cdefs.h>
-#include <iprt/critsect.h>
 #include <iprt/types.h>
+#include <iprt/cpp/lock.h>
 
 #include <list>
@@ -32,25 +32,4 @@
 class HostDnsMonitorProxy;
 typedef const HostDnsMonitorProxy *PCHostDnsMonitorProxy;
-
-class Lockee
-{
-  public:
-    Lockee();
-    virtual ~Lockee();
-    const RTCRITSECT* lock() const;
-
-  private:
-    RTCRITSECT mLock;
-};
-
-class ALock
-{
-  public:
-    explicit ALock(const Lockee *l);
-    ~ALock();
-
-  private:
-    const Lockee *lockee;
-};
 
 class HostDnsInformation
@@ -67,5 +46,5 @@
  * it lifecycle starts and ends together with VBoxSVC.
  */
-class HostDnsMonitor : public Lockee
+class HostDnsMonitor
 {
   public:
@@ -96,4 +75,7 @@
     static int threadMonitoringRoutine(RTTHREAD, void *);
 
+  protected:
+    mutable RTCLockMtx m_LockMtx;
+
   public:
     struct Data;
@@ -104,5 +86,5 @@
  * This class supposed to be a proxy for events on changing Host Name Resolving configurations.
  */
-class HostDnsMonitorProxy : public Lockee
+class HostDnsMonitorProxy
 {
     public:
@@ -120,4 +102,7 @@
     private:
     void updateInfo();
+ 
+  private:
+    mutable RTCLockMtx m_LockMtx;
 
     private:
Index: /trunk/src/VBox/Main/src-server/darwin/HostDnsServiceDarwin.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/darwin/HostDnsServiceDarwin.cpp	(revision 55199)
+++ /trunk/src/VBox/Main/src-server/darwin/HostDnsServiceDarwin.cpp	(revision 55200)
@@ -77,5 +77,5 @@
     HostDnsServiceDarwin *pThis = (HostDnsServiceDarwin *)info;
 
-    ALock l(pThis);
+    RTCLock grab(pThis->m_LockMtx);
     pThis->updateInfo();
 }
@@ -116,5 +116,5 @@
 void HostDnsServiceDarwin::monitorThreadShutdown()
 {
-    ALock l(this);
+    RTCLock grab(m_LockMtx);
     if (!m->m_fStop)
     {
