+#elif defined(_WIN32)
+ {
+ HANDLE hFileMap;
+
+ hFileMap = CreateFileMapping((HANDLE) _get_osfhandle(fd), NULL, PAGE_READONLY, 0, 0, NULL);
+ if (hFileMap == NULL)
+ return FcFalse;
+
+ current_dir_block = MapViewOfFile (hFileMap, FILE_MAP_READ, 0, 0, metadata.count + pos);
+ if (current_dir_block == NULL)
+ {
+ CloseHandle (hFileMap);
+ return FcFalse;
+ }
+
+ current_dir_block = (void *)((char *)current_dir_block + pos);
+ }
+#else
+ current_dir_block = malloc (metadata.count);
+ if (!current_dir_block)
+ return FcFalse;
+
+ /* could also use CreateMappedViewOfFile under MinGW... */
+ if (read (fd, current_dir_block, metadata.count) != metadata.count)
+ goto bail;
+#endif
+ lseek (fd, pos+metadata.count, SEEK_SET);