Beispiel #1
0
 static UnsafeNativeMethods()
 {
     // This static contructor was added to make sure we load the proper version of Penimc.dll.
     //
     // Details:
     // P/invoke will use LoadLibrary to load penimc.dll and it will check the current
     // application directory before checking the system32 directory where this DLL
     // is installed to.  If penimc.dll happens to be in the application directory as well
     // as the system32 directory we'll actually end up loaded two versions of
     // penimc.dll.  One that we'd use for P/invokes and one that we'd use for COM.
     // If this happens then our Stylus code will fail since it relies on both P/invoke and COM
     // calls to talk to penimc.dll and it requires just one instance of this DLL to work.
     //
     // DDVSO:474688
     // We cannot rely on COM to load PenIMC.  The CoCreate call can re-enter, potentially deadlocking.
     //
     // 1) CoCreate is COM Pumped and re-enters off of an EnableCore call
     // 2) Message for, say, device changed or tablet added is received.
     // 3) Work is sent to the PenThread and the UI thread waits on it
     // 4) PenThread accesses MS.Win32.Penimc.UnsafeNativeMethods
     //
     // At this point, the static constructor has not finished and the CLR blocks the PenThread on the
     // completion of the constructor.  However, the UI thread cannot complete the constructor call until
     // the PenThread returns.
     //
     // Instead, use LoadLibrary with a full path here to ensure it won't load local binaries and we don't re-enter.
     WpfLibraryLoader.EnsureLoaded(ExternDll.Penimc);
 }
        static OSVersionHelper()
        {
            WpfLibraryLoader.EnsureLoaded(MS.Win32.ExternDll.PresentationNativeDll);

            IsOsWindows10RS5OrGreater = IsWindows10RS5OrGreater();

            IsOsWindows10RS3OrGreater = IsWindows10RS3OrGreater();

            IsOsWindows10RS2OrGreater = IsWindows10RS2OrGreater();

            IsOsWindows10RS1OrGreater = IsWindows10RS1OrGreater();

            IsOsWindows10TH2OrGreater = IsWindows10TH2OrGreater();

            IsOsWindows10TH1OrGreater = IsWindows10TH1OrGreater();

            IsOsWindows10OrGreater = IsWindows10OrGreater();

            IsOsWindows8Point1OrGreater = IsWindows8Point1OrGreater();

            IsOsWindows8OrGreater = IsWindows8OrGreater();

            IsOsWindows7SP1OrGreater = IsWindows7SP1OrGreater();

            IsOsWindows7OrGreater = IsWindows7OrGreater();

            IsOsWindowsVistaSP2OrGreater = IsWindowsVistaSP2OrGreater();

            IsOsWindowsVistaSP1OrGreater = IsWindowsVistaSP1OrGreater();

            IsOsWindowsVistaOrGreater = IsWindowsVistaOrGreater();

            IsOsWindowsXPSP3OrGreater = IsWindowsXPSP3OrGreater();

            IsOsWindowsXPSP2OrGreater = IsWindowsXPSP2OrGreater();

            IsOsWindowsXPSP1OrGreater = IsWindowsXPSP1OrGreater();

            IsOsWindowsXPOrGreater = IsWindowsXPOrGreater();

            IsOsWindowsServer = IsWindowsServer();
        }
 static OSVersionHelper()
 {
     WpfLibraryLoader.EnsureLoaded("PresentationNative_v0400.dll");
     OSVersionHelper.IsOsWindows10RS5OrGreater    = OSVersionHelper.IsWindows10RS5OrGreater();
     OSVersionHelper.IsOsWindows10RS3OrGreater    = OSVersionHelper.IsWindows10RS3OrGreater();
     OSVersionHelper.IsOsWindows10RS2OrGreater    = OSVersionHelper.IsWindows10RS2OrGreater();
     OSVersionHelper.IsOsWindows10RS1OrGreater    = OSVersionHelper.IsWindows10RS1OrGreater();
     OSVersionHelper.IsOsWindows10TH2OrGreater    = OSVersionHelper.IsWindows10TH2OrGreater();
     OSVersionHelper.IsOsWindows10TH1OrGreater    = OSVersionHelper.IsWindows10TH1OrGreater();
     OSVersionHelper.IsOsWindows10OrGreater       = OSVersionHelper.IsWindows10OrGreater();
     OSVersionHelper.IsOsWindows8Point1OrGreater  = OSVersionHelper.IsWindows8Point1OrGreater();
     OSVersionHelper.IsOsWindows8OrGreater        = OSVersionHelper.IsWindows8OrGreater();
     OSVersionHelper.IsOsWindows7SP1OrGreater     = OSVersionHelper.IsWindows7SP1OrGreater();
     OSVersionHelper.IsOsWindows7OrGreater        = OSVersionHelper.IsWindows7OrGreater();
     OSVersionHelper.IsOsWindowsVistaSP2OrGreater = OSVersionHelper.IsWindowsVistaSP2OrGreater();
     OSVersionHelper.IsOsWindowsVistaSP1OrGreater = OSVersionHelper.IsWindowsVistaSP1OrGreater();
     OSVersionHelper.IsOsWindowsVistaOrGreater    = OSVersionHelper.IsWindowsVistaOrGreater();
     OSVersionHelper.IsOsWindowsXPSP3OrGreater    = OSVersionHelper.IsWindowsXPSP3OrGreater();
     OSVersionHelper.IsOsWindowsXPSP2OrGreater    = OSVersionHelper.IsWindowsXPSP2OrGreater();
     OSVersionHelper.IsOsWindowsXPSP1OrGreater    = OSVersionHelper.IsWindowsXPSP1OrGreater();
     OSVersionHelper.IsOsWindowsXPOrGreater       = OSVersionHelper.IsWindowsXPOrGreater();
     OSVersionHelper.IsOsWindowsServer            = OSVersionHelper.IsWindowsServer();
 }
 static NativeMethodsSetLastError()
 {
     // load the installed version of native DLLs, so that P/Invokes call the right methods
     WpfLibraryLoader.EnsureLoaded(PresentationNativeDll);
 }