diff --git a/win/rfb_win32/SDisplay.cxx b/win/rfb_win32/SDisplay.cxx
index 26a7bbc..d4cedf8 100644
--- a/win/rfb_win32/SDisplay.cxx
+++ b/win/rfb_win32/SDisplay.cxx
@@ -29,7 +29,6 @@
 #include <rfb_win32/MonitorInfo.h>
 #include <rfb_win32/SDisplayCorePolling.h>
 #include <rfb_win32/SDisplayCoreWMHooks.h>
-#include <rfb_win32/SDisplayCoreDriver.h>
 #include <rfb/Exception.h>
 #include <rfb/LogWriter.h>
 
@@ -173,9 +172,7 @@
   int tryMethod = updateMethod_;
   while (!core) {
     try {
-      if (tryMethod == 2)
-        core = new SDisplayCoreDriver(this, &updates);
-      else if (tryMethod == 1)
+      if (tryMethod == 1)
         core = new SDisplayCoreWMHooks(this, &updates);
       else
         core = new SDisplayCorePolling(this, &updates);
@@ -234,10 +231,6 @@
   return WMHooks::areAvailable();
 }
 
-bool SDisplay::isDriverAvailable() {
-  return SDisplayCoreDriver::isAvailable();
-}
-
 
 bool SDisplay::isRestartRequired() {
   // - We must restart the SDesktop if:
diff --git a/win/rfb_win32/SDisplay.h b/win/rfb_win32/SDisplay.h
index 6aac59a..70208a7 100644
--- a/win/rfb_win32/SDisplay.h
+++ b/win/rfb_win32/SDisplay.h
@@ -96,9 +96,8 @@
       static BoolParameter removePattern;
       static BoolParameter disableEffects;
 
-      // -=- Use by VNC Config to determine whether hooks, driver, etc are available
+      // -=- Use by VNC Config to determine whether hooks are available
       static bool areHooksAvailable();
-      static bool isDriverAvailable();
 
 
     protected:
diff --git a/win/rfb_win32/SDisplayCoreDriver.h b/win/rfb_win32/SDisplayCoreDriver.h
deleted file mode 100644
index 5fea75c..0000000
--- a/win/rfb_win32/SDisplayCoreDriver.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Copyright (C) 2002-2005 RealVNC Ltd.  All Rights Reserved.
- * 
- * This is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- * 
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with this software; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
- * USA.
- */
-
-// -=- SDisplayCoreDriver.h
-//
-// Placeholder for SDisplayCore mirror-driver implementation.
-
-#ifndef __RFB_SDISPLAY_CORE_DRIVER_H__
-#define __RFB_SDISPLAY_CORE_DRIVER_H__
-
-#include <rfb_win32/SDisplay.h>
-
-namespace rfb {
-  namespace win32 {
-
-    class SDisplayCoreDriver: public SDisplayCore {
-    public:
-      SDisplayCoreDriver(SDisplay* display, UpdateTracker* ut) {
-        throw rdr::Exception("Not supported");
-      }
-
-      // - Called by SDisplay to inform Core of the screen size
-      virtual void setScreenRect(const Rect& screenRect_) {}
-
-      // - Called by SDisplay to flush updates to the specified tracker
-      virtual void flushUpdates() {}
-
-      virtual const char* methodName() const { return "VNC Mirror Driver"; }
-
-      // - Determine whether the display driver is installed & usable
-      static bool isAvailable() { return false; }
-    };
-
-  };
-};
-
-#endif
