diff --git a/inc/winfsp/fsctl.h b/inc/winfsp/fsctl.h index c44ed040..6faf7d2f 100644 --- a/inc/winfsp/fsctl.h +++ b/inc/winfsp/fsctl.h @@ -696,6 +696,7 @@ FSP_API NTSTATUS FspFsctlNotify(HANDLE VolumeHandle, FSP_API NTSTATUS FspFsctlGetVolumeList(PWSTR DevicePath, PWCHAR VolumeListBuf, PSIZE_T PVolumeListSize); FSP_API NTSTATUS FspFsctlPreflight(PWSTR DevicePath); +FSP_API NTSTATUS FspFsctlServiceVersion(PUINT32 PVersion); FSP_API NTSTATUS FspFsctlStartService(VOID); FSP_API NTSTATUS FspFsctlStopService(VOID); FSP_API NTSTATUS FspFsctlEnumServices( diff --git a/src/dll/fsctl.c b/src/dll/fsctl.c index 3ab8b0e0..6a3e7d1a 100644 --- a/src/dll/fsctl.c +++ b/src/dll/fsctl.c @@ -31,8 +31,6 @@ static ULONG FspFsctlServiceVersionValue; static DWORD FspFsctlTransactCode = FSP_FSCTL_TRANSACT; static DWORD FspFsctlTransactBatchCode = FSP_FSCTL_TRANSACT_BATCH; -static VOID FspFsctlServiceVersion(PUINT32 PVersion); - FSP_API NTSTATUS FspFsctlCreateVolume(PWSTR DevicePath, const FSP_FSCTL_VOLUME_PARAMS *VolumeParams, PWCHAR VolumeNameBuf, SIZE_T VolumeNameSize, @@ -423,12 +421,14 @@ exit: return TRUE; } -static VOID FspFsctlServiceVersion(PUINT32 PVersion) +FSP_API NTSTATUS FspFsctlServiceVersion(PUINT32 PVersion) { InitOnceExecuteOnce(&FspFsctlServiceVersionInitOnce, FspFsctlServiceVersionInitialize, 0, 0); if (0 != PVersion) *PVersion = FspFsctlServiceVersionValue; + + return 0 != FspFsctlServiceVersionValue ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL; } static SRWLOCK FspFsctlStartStopServiceLock = SRWLOCK_INIT;