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)