diff -Naur VTK-9.3.0/Rendering/ZSpace/vtk.module VTK.new/Rendering/ZSpace/vtk.module
--- VTK-9.3.0/Rendering/ZSpace/vtk.module	2023-11-14 00:37:21.000000000 +0100
+++ VTK.new/Rendering/ZSpace/vtk.module	2023-11-20 22:26:44.777936455 +0100
@@ -8,6 +8,8 @@
   BSD-3-Clause
 SPDX_COPYRIGHT_TEXT
   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
+CONDITION
+  WIN32
 DEPENDS
   VTK::CommonCore
   VTK::CommonDataModel
diff -Naur VTK-9.3.0/Rendering/ZSpace/vtkZSpaceCoreCompatibilitySDKManager.cxx VTK.new/Rendering/ZSpace/vtkZSpaceCoreCompatibilitySDKManager.cxx
--- VTK-9.3.0/Rendering/ZSpace/vtkZSpaceCoreCompatibilitySDKManager.cxx	2023-11-14 00:37:21.000000000 +0100
+++ VTK.new/Rendering/ZSpace/vtkZSpaceCoreCompatibilitySDKManager.cxx	2023-11-20 22:26:44.778936462 +0100
@@ -55,12 +55,12 @@
 
 //------------------------------------------------------------------------------
 bool vtkZSpaceCoreCompatibilitySDKManager::loadZspaceCoreCompatibilityEntryPoints(
-  const char* zSpaceCoreCompatDllFilePath, HMODULE& dllModuleHandle,
+  const char* zSpaceCoreCompatDllFilePath, vtkLibHandle& dllModuleHandle,
   zSpaceCoreCompatEntryPoints& entryPoints)
 {
-  dllModuleHandle = LoadLibraryA(zSpaceCoreCompatDllFilePath);
+  dllModuleHandle = vtkDynamicLoader::OpenLibrary(zSpaceCoreCompatDllFilePath);
 
-  if (dllModuleHandle == nullptr)
+  if (!dllModuleHandle)
   {
     // If the release variant of the zSpace Core Compatibility API DLL
     // could not be loaded, attempt to the debug variant instead.
@@ -68,11 +68,11 @@
     std::string zSpaceCoreCompatDllDebugFilePath(zSpaceCoreCompatDllFilePath);
     zSpaceCoreCompatDllDebugFilePath.append("_D");
 
-    dllModuleHandle = LoadLibraryA(zSpaceCoreCompatDllDebugFilePath.c_str());
+    dllModuleHandle = vtkDynamicLoader::OpenLibrary(zSpaceCoreCompatDllDebugFilePath.c_str());
 
-    if (dllModuleHandle == nullptr)
+    if (!dllModuleHandle)
     {
-      vtkErrorMacro(<< "Win32 Error : "
+      vtkErrorMacro(<< "System Error : "
                     << "Failed to load zSpace Core Compatibility API DLL.");
 
       return false;
@@ -81,12 +81,12 @@
 
 #define ZC_COMPAT_SAMPLE_LOCAL_LOAD_ENTRY_POINT(undecoratedFuncName)                               \
   {                                                                                                \
-    void* entryPointProcAddress =                                                                  \
-      GetProcAddress(dllModuleHandle, "zccompat" #undecoratedFuncName);                            \
+    vtkSymbolPointer entryPointProcAddress =                                                       \
+      vtkDynamicLoader::GetSymbolAddress(dllModuleHandle, "zccompat" #undecoratedFuncName);        \
                                                                                                    \
     if (entryPointProcAddress == nullptr)                                                          \
     {                                                                                              \
-      vtkErrorMacro(<< "Win32 Error : "                                                            \
+      vtkErrorMacro(<< "System Error : "                                                           \
                     << "Failed to get zSpace Core Compatibility entry point "                      \
                     << "proc address for entry point "                                             \
                     << "\"zccompat" << #undecoratedFuncName << "\".");                             \
diff -Naur VTK-9.3.0/Rendering/ZSpace/vtkZSpaceCoreCompatibilitySDKManager.h VTK.new/Rendering/ZSpace/vtkZSpaceCoreCompatibilitySDKManager.h
--- VTK-9.3.0/Rendering/ZSpace/vtkZSpaceCoreCompatibilitySDKManager.h	2023-11-14 00:37:21.000000000 +0100
+++ VTK.new/Rendering/ZSpace/vtkZSpaceCoreCompatibilitySDKManager.h	2023-11-20 22:26:44.777936455 +0100
@@ -15,6 +15,7 @@
 #ifndef vtkZSpaceCoreCompatibilitySDKManager_h
 #define vtkZSpaceCoreCompatibilitySDKManager_h
 
+#include "vtkDynamicLoader.h"
 #include "vtkZSpaceSDKManager.h"
 
 // Disable "anonymous struct/union" warning on zSpace compat headers
@@ -22,8 +23,7 @@
 #include "zSpaceCoreCompatibility.h" // zSpace header
 #pragma warning(default : 4201)
 
-#include <vector>    // for std::vector
-#include <windows.h> // for HMODULE
+#include <vector> // for std::vector
 
 VTK_ABI_NAMESPACE_BEGIN
 
@@ -116,7 +116,7 @@
   zSpaceCoreCompatEntryPoints EntryPts;
 
   // Handle to the zSpace Core Compatibility API dynamic library (.dll).
-  HMODULE zSpaceCoreCompatDllModuleHandle;
+  vtkLibHandle zSpaceCoreCompatDllModuleHandle;
 
   // Handle to the current window
   HWND WidondowHandle;
@@ -126,7 +126,7 @@
    * zSpace Core Compatibility API entry point functions (at runtime)
    */
   bool loadZspaceCoreCompatibilityEntryPoints(const char* zSpaceCoreCompatDllFilePath,
-    HMODULE& zSpaceCoreCompatDllModuleHandle, zSpaceCoreCompatEntryPoints& entryPoints);
+    vtkLibHandle& zSpaceCoreCompatDllModuleHandle, zSpaceCoreCompatEntryPoints& entryPoints);
 
   /**
    * zSpace stores matrix in column-major format (as OpenGL). The matrix
