diff --git a/include/perfetto/ext/base/file_utils.h b/include/perfetto/ext/base/file_utils.h
index 289e5c1..17271da 100644
--- a/include/perfetto/ext/base/file_utils.h
+++ b/include/perfetto/ext/base/file_utils.h
@@ -34,8 +34,6 @@
 
 #if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN)
 using FileOpenMode = int;
-
-int CloseFindHandle(PlatformHandle handle);
 #else
 using FileOpenMode = mode_t;
 #endif
diff --git a/src/base/file_utils.cc b/src/base/file_utils.cc
index 9275bfa..4c06980 100644
--- a/src/base/file_utils.cc
+++ b/src/base/file_utils.cc
@@ -44,23 +44,8 @@
 namespace base {
 namespace {
 constexpr size_t kBufSize = 2048;
-
-#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN)
-using ScopedFindHandle = ScopedResource<HANDLE,
-                                        &CloseFindHandle,
-                                        /*InvalidValue=*/INVALID_HANDLE_VALUE,
-                                        /*CheckClose=*/true>;
-#endif
 }  // namespace
 
-#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN)
-int CloseFindHandle(HANDLE handle) {
-  // FindClose returns non-zero on success, but CloseFunction of ScopedResource
-  // expects 0 on success.
-  return FindClose(handle) != 0 ? 0 : 1;
-}
-#endif
-
 ssize_t Read(int fd, void* dst, size_t dst_size) {
 #if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN)
   return _read(fd, dst, static_cast<unsigned>(dst_size));
@@ -252,12 +237,17 @@
     if (glob_path.length() + 1 > MAX_PATH)
       return base::ErrStatus("Directory path %s is too long", dir_path.c_str());
     WIN32_FIND_DATAA ffd;
-    ScopedFindHandle hFind(FindFirstFileA(glob_path.c_str(), &ffd));
-    if (!hFind)
+    // We do not use a ScopedResource for the HANDLE from FindFirstFile because
+    // the invalid value INVALID_HANDLE_VALUE is not a constexpr under some
+    // compile configurations, and thus cannot be used as a template argument.
+    HANDLE hFind = FindFirstFileA(glob_path.c_str(), &ffd);
+    if (hFind == INVALID_HANDLE_VALUE) {
       // For empty directories, there should be at least one entry '.'.
       // If FindFirstFileA returns INVALID_HANDLE_VALUE, this means directory
       // couldn't be accessed.
+      FindClose(hFind);
       return base::ErrStatus("Failed to open directory %s", cur_dir.c_str());
+    }
     do {
       if (strcmp(ffd.cFileName, ".") == 0 || strcmp(ffd.cFileName, "..") == 0)
         continue;
@@ -269,7 +259,8 @@
         PERFETTO_CHECK(full_path.length() > root_dir_path.length());
         output.push_back(full_path.substr(root_dir_path.length()));
       }
-    } while (FindNextFileA(hFind.get(), &ffd));
+    } while (FindNextFileA(hFind, &ffd));
+    FindClose(hFind);
 #else
     ScopedDir dir = ScopedDir(opendir(cur_dir.c_str()));
     if (!dir) {
