diff --git a/build/VStudio/version.properties b/build/VStudio/version.properties
index 603b2238..3cd4408d 100644
--- a/build/VStudio/version.properties
+++ b/build/VStudio/version.properties
@@ -10,4 +10,9 @@
0.15.$(MyBuildNumber)
$(MyVersion.Replace('.',',')),0
+
+
+ NTDDI_VERSION=0x06000000;_WIN32_WINNT=0x0600
+
+
\ No newline at end of file
diff --git a/src/launcher/launcher.c b/src/launcher/launcher.c
index 3828f11f..f97399be 100644
--- a/src/launcher/launcher.c
+++ b/src/launcher/launcher.c
@@ -686,6 +686,7 @@ NTSTATUS SvcInstanceStart(HANDLE ClientToken,
UINT8 RspBuf[2];
DWORD BytesTransferred;
OVERLAPPED Overlapped;
+ DWORD WaitResult;
if (0 == (BytesTransferred =
WideCharToMultiByte(CP_UTF8, 0, Secret, lstrlenW(Secret), ReqBuf, sizeof ReqBuf, 0, 0)))
@@ -711,13 +712,22 @@ NTSTATUS SvcInstanceStart(HANDLE ClientToken,
goto exit;
}
- if (!GetOverlappedResultEx(SvcInstance->StdioHandles[1], &Overlapped, &BytesTransferred,
- LAUNCHER_START_WITH_SECRET_TIMEOUT, FALSE))
+ /*
+ * We need to perform a GetOverlappedResult with a timeout. GetOverlappedResultEx would
+ * be perfect except that it is a Windows 8 and above API. We will therefore replace with
+ * WaitForSingleObject followed by GetOverlappedResult on success.
+ */
+ WaitResult = WaitForSingleObject(SvcInstance->StdioHandles[1],
+ LAUNCHER_START_WITH_SECRET_TIMEOUT);
+ if (WAIT_OBJECT_0 == WaitResult)
+ Result = GetOverlappedResult(SvcInstance->StdioHandles[1], &Overlapped, &BytesTransferred, TRUE) ?
+ STATUS_SUCCESS : FspNtStatusFromWin32(GetLastError());
+ else if (WAIT_TIMEOUT == WaitResult)
+ Result = STATUS_TIMEOUT;
+ else
+ Result = FspNtStatusFromWin32(GetLastError());
+ if (!NT_SUCCESS(Result))
{
- if (WAIT_TIMEOUT == GetLastError())
- Result = STATUS_TIMEOUT;
- else
- Result = FspNtStatusFromWin32(GetLastError());
CancelIoEx(SvcInstance->StdioHandles[1], &Overlapped);
goto exit;
}
diff --git a/src/sys/driver.h b/src/sys/driver.h
index 684a56de..7b10a5db 100644
--- a/src/sys/driver.h
+++ b/src/sys/driver.h
@@ -1034,4 +1034,14 @@ extern WCHAR FspFileDescDirectoryPatternMatchAll[];
extern FSP_MV_CcCoherencyFlushAndPurgeCache *FspMvCcCoherencyFlushAndPurgeCache;
extern ULONG FspMvMdlMappingNoWrite;
+/* add missing API prototype */
+#if (NTDDI_VERSION < NTDDI_WIN7)
+NTKERNELAPI
+NTSTATUS
+ObCloseHandle(
+ _In_ HANDLE Handle,
+ _In_ KPROCESSOR_MODE PreviousMode
+ );
+#endif
+
#endif
diff --git a/src/sys/ioctl.i b/src/sys/ioctl.i
index 8b7acfc2..f56887ab 100644
--- a/src/sys/ioctl.i
+++ b/src/sys/ioctl.i
@@ -89,82 +89,82 @@ SYM(FSCTL_DFSR_SET_GHOST_HANDLE_STATE)
SYM(FSCTL_TXFS_LIST_TRANSACTIONS)
SYM(FSCTL_QUERY_PAGEFILE_ENCRYPTION)
SYM(FSCTL_RESET_VOLUME_ALLOCATION_HINTS)
-SYM(FSCTL_QUERY_DEPENDENT_VOLUME)
-SYM(FSCTL_SD_GLOBAL_CHANGE)
+//SYM(FSCTL_QUERY_DEPENDENT_VOLUME)
+//SYM(FSCTL_SD_GLOBAL_CHANGE)
SYM(FSCTL_TXFS_READ_BACKUP_INFORMATION2)
-SYM(FSCTL_LOOKUP_STREAM_FROM_CLUSTER)
-SYM(FSCTL_TXFS_WRITE_BACKUP_INFORMATION2)
-SYM(FSCTL_FILE_TYPE_NOTIFICATION)
-SYM(FSCTL_FILE_LEVEL_TRIM)
-SYM(FSCTL_GET_BOOT_AREA_INFO)
-SYM(FSCTL_GET_RETRIEVAL_POINTER_BASE)
-SYM(FSCTL_SET_PERSISTENT_VOLUME_STATE)
-SYM(FSCTL_QUERY_PERSISTENT_VOLUME_STATE)
-SYM(FSCTL_REQUEST_OPLOCK)
-SYM(FSCTL_CSV_TUNNEL_REQUEST)
-SYM(FSCTL_IS_CSV_FILE)
-SYM(FSCTL_QUERY_FILE_SYSTEM_RECOGNITION)
-SYM(FSCTL_CSV_GET_VOLUME_PATH_NAME)
-SYM(FSCTL_CSV_GET_VOLUME_NAME_FOR_VOLUME_MOUNT_POINT)
-SYM(FSCTL_CSV_GET_VOLUME_PATH_NAMES_FOR_VOLUME_NAME)
-SYM(FSCTL_IS_FILE_ON_CSV_VOLUME)
-SYM(FSCTL_CORRUPTION_HANDLING)
-SYM(FSCTL_OFFLOAD_READ)
-SYM(FSCTL_OFFLOAD_WRITE)
-SYM(FSCTL_CSV_INTERNAL)
-SYM(FSCTL_SET_PURGE_FAILURE_MODE)
-SYM(FSCTL_QUERY_FILE_LAYOUT)
-SYM(FSCTL_IS_VOLUME_OWNED_BYCSVFS)
-SYM(FSCTL_GET_INTEGRITY_INFORMATION)
-SYM(FSCTL_SET_INTEGRITY_INFORMATION)
-SYM(FSCTL_QUERY_FILE_REGIONS)
-SYM(FSCTL_DEDUP_FILE)
-SYM(FSCTL_DEDUP_QUERY_FILE_HASHES)
-SYM(FSCTL_DEDUP_QUERY_RANGE_STATE)
-SYM(FSCTL_DEDUP_QUERY_REPARSE_INFO)
-SYM(FSCTL_RKF_INTERNAL)
-SYM(FSCTL_SCRUB_DATA)
-SYM(FSCTL_REPAIR_COPIES)
-SYM(FSCTL_DISABLE_LOCAL_BUFFERING)
-SYM(FSCTL_CSV_MGMT_LOCK)
-SYM(FSCTL_CSV_QUERY_DOWN_LEVEL_FILE_SYSTEM_CHARACTERISTICS)
-SYM(FSCTL_ADVANCE_FILE_ID)
-SYM(FSCTL_CSV_SYNC_TUNNEL_REQUEST)
-SYM(FSCTL_CSV_QUERY_VETO_FILE_DIRECT_IO)
-SYM(FSCTL_WRITE_USN_REASON)
-SYM(FSCTL_CSV_CONTROL)
-SYM(FSCTL_GET_REFS_VOLUME_DATA)
-SYM(FSCTL_CSV_H_BREAKING_SYNC_TUNNEL_REQUEST)
-SYM(FSCTL_QUERY_STORAGE_CLASSES)
-SYM(FSCTL_QUERY_REGION_INFO)
-SYM(FSCTL_USN_TRACK_MODIFIED_RANGES)
-SYM(FSCTL_QUERY_SHARED_VIRTUAL_DISK_SUPPORT)
-SYM(FSCTL_SVHDX_SYNC_TUNNEL_REQUEST)
-SYM(FSCTL_SVHDX_SET_INITIATOR_INFORMATION)
-SYM(FSCTL_SET_EXTERNAL_BACKING)
-SYM(FSCTL_GET_EXTERNAL_BACKING)
-SYM(FSCTL_DELETE_EXTERNAL_BACKING)
-SYM(FSCTL_ENUM_EXTERNAL_BACKING)
-SYM(FSCTL_ENUM_OVERLAY)
-SYM(FSCTL_ADD_OVERLAY)
-SYM(FSCTL_REMOVE_OVERLAY)
-SYM(FSCTL_UPDATE_OVERLAY)
-SYM(FSCTL_DUPLICATE_EXTENTS_TO_FILE)
-SYM(FSCTL_SPARSE_OVERALLOCATE)
-SYM(FSCTL_STORAGE_QOS_CONTROL)
-SYM(FSCTL_INITIATE_FILE_METADATA_OPTIMIZATION)
-SYM(FSCTL_QUERY_FILE_METADATA_OPTIMIZATION)
-SYM(FSCTL_SVHDX_ASYNC_TUNNEL_REQUEST)
-SYM(FSCTL_GET_WOF_VERSION)
-SYM(FSCTL_HCS_SYNC_TUNNEL_REQUEST)
-SYM(FSCTL_HCS_ASYNC_TUNNEL_REQUEST)
-SYM(FSCTL_QUERY_EXTENT_READ_CACHE_INFO)
-SYM(FSCTL_QUERY_REFS_VOLUME_COUNTER_INFO)
-SYM(FSCTL_CLEAN_VOLUME_METADATA)
-SYM(FSCTL_SET_INTEGRITY_INFORMATION_EX)
-SYM(FSCTL_SUSPEND_OVERLAY)
-SYM(FSCTL_VIRTUAL_STORAGE_QUERY_PROPERTY)
-SYM(FSCTL_FILESYSTEM_GET_STATISTICS_EX)
+//SYM(FSCTL_LOOKUP_STREAM_FROM_CLUSTER)
+//SYM(FSCTL_TXFS_WRITE_BACKUP_INFORMATION2)
+//SYM(FSCTL_FILE_TYPE_NOTIFICATION)
+//SYM(FSCTL_FILE_LEVEL_TRIM)
+//SYM(FSCTL_GET_BOOT_AREA_INFO)
+//SYM(FSCTL_GET_RETRIEVAL_POINTER_BASE)
+//SYM(FSCTL_SET_PERSISTENT_VOLUME_STATE)
+//SYM(FSCTL_QUERY_PERSISTENT_VOLUME_STATE)
+//SYM(FSCTL_REQUEST_OPLOCK)
+//SYM(FSCTL_CSV_TUNNEL_REQUEST)
+//SYM(FSCTL_IS_CSV_FILE)
+//SYM(FSCTL_QUERY_FILE_SYSTEM_RECOGNITION)
+//SYM(FSCTL_CSV_GET_VOLUME_PATH_NAME)
+//SYM(FSCTL_CSV_GET_VOLUME_NAME_FOR_VOLUME_MOUNT_POINT)
+//SYM(FSCTL_CSV_GET_VOLUME_PATH_NAMES_FOR_VOLUME_NAME)
+//SYM(FSCTL_IS_FILE_ON_CSV_VOLUME)
+//SYM(FSCTL_CORRUPTION_HANDLING)
+//SYM(FSCTL_OFFLOAD_READ)
+//SYM(FSCTL_OFFLOAD_WRITE)
+//SYM(FSCTL_CSV_INTERNAL)
+//SYM(FSCTL_SET_PURGE_FAILURE_MODE)
+//SYM(FSCTL_QUERY_FILE_LAYOUT)
+//SYM(FSCTL_IS_VOLUME_OWNED_BYCSVFS)
+//SYM(FSCTL_GET_INTEGRITY_INFORMATION)
+//SYM(FSCTL_SET_INTEGRITY_INFORMATION)
+//SYM(FSCTL_QUERY_FILE_REGIONS)
+//SYM(FSCTL_DEDUP_FILE)
+//SYM(FSCTL_DEDUP_QUERY_FILE_HASHES)
+//SYM(FSCTL_DEDUP_QUERY_RANGE_STATE)
+//SYM(FSCTL_DEDUP_QUERY_REPARSE_INFO)
+//SYM(FSCTL_RKF_INTERNAL)
+//SYM(FSCTL_SCRUB_DATA)
+//SYM(FSCTL_REPAIR_COPIES)
+//SYM(FSCTL_DISABLE_LOCAL_BUFFERING)
+//SYM(FSCTL_CSV_MGMT_LOCK)
+//SYM(FSCTL_CSV_QUERY_DOWN_LEVEL_FILE_SYSTEM_CHARACTERISTICS)
+//SYM(FSCTL_ADVANCE_FILE_ID)
+//SYM(FSCTL_CSV_SYNC_TUNNEL_REQUEST)
+//SYM(FSCTL_CSV_QUERY_VETO_FILE_DIRECT_IO)
+//SYM(FSCTL_WRITE_USN_REASON)
+//SYM(FSCTL_CSV_CONTROL)
+//SYM(FSCTL_GET_REFS_VOLUME_DATA)
+//SYM(FSCTL_CSV_H_BREAKING_SYNC_TUNNEL_REQUEST)
+//SYM(FSCTL_QUERY_STORAGE_CLASSES)
+//SYM(FSCTL_QUERY_REGION_INFO)
+//SYM(FSCTL_USN_TRACK_MODIFIED_RANGES)
+//SYM(FSCTL_QUERY_SHARED_VIRTUAL_DISK_SUPPORT)
+//SYM(FSCTL_SVHDX_SYNC_TUNNEL_REQUEST)
+//SYM(FSCTL_SVHDX_SET_INITIATOR_INFORMATION)
+//SYM(FSCTL_SET_EXTERNAL_BACKING)
+//SYM(FSCTL_GET_EXTERNAL_BACKING)
+//SYM(FSCTL_DELETE_EXTERNAL_BACKING)
+//SYM(FSCTL_ENUM_EXTERNAL_BACKING)
+//SYM(FSCTL_ENUM_OVERLAY)
+//SYM(FSCTL_ADD_OVERLAY)
+//SYM(FSCTL_REMOVE_OVERLAY)
+//SYM(FSCTL_UPDATE_OVERLAY)
+//SYM(FSCTL_DUPLICATE_EXTENTS_TO_FILE)
+//SYM(FSCTL_SPARSE_OVERALLOCATE)
+//SYM(FSCTL_STORAGE_QOS_CONTROL)
+//SYM(FSCTL_INITIATE_FILE_METADATA_OPTIMIZATION)
+//SYM(FSCTL_QUERY_FILE_METADATA_OPTIMIZATION)
+//SYM(FSCTL_SVHDX_ASYNC_TUNNEL_REQUEST)
+//SYM(FSCTL_GET_WOF_VERSION)
+//SYM(FSCTL_HCS_SYNC_TUNNEL_REQUEST)
+//SYM(FSCTL_HCS_ASYNC_TUNNEL_REQUEST)
+//SYM(FSCTL_QUERY_EXTENT_READ_CACHE_INFO)
+//SYM(FSCTL_QUERY_REFS_VOLUME_COUNTER_INFO)
+//SYM(FSCTL_CLEAN_VOLUME_METADATA)
+//SYM(FSCTL_SET_INTEGRITY_INFORMATION_EX)
+//SYM(FSCTL_SUSPEND_OVERLAY)
+//SYM(FSCTL_VIRTUAL_STORAGE_QUERY_PROPERTY)
+//SYM(FSCTL_FILESYSTEM_GET_STATISTICS_EX)
SYM(FSCTL_LMR_GET_LINK_TRACKING_INFORMATION)
SYM(FSCTL_LMR_SET_LINK_TRACKING_INFORMATION)
SYM(IOCTL_LMR_ARE_FILE_OBJECTS_ON_SAME_SERVER)