mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-22 08:23:05 -05:00
fsptool: ver, unload commands
This commit is contained in:
parent
5dda5903a8
commit
adeed2b79d
@ -2124,6 +2124,7 @@ FSP_API NTSTATUS FspCallNamedPipeSecurelyEx(PWSTR PipeName,
|
|||||||
PULONG PBytesTransferred, ULONG Timeout, BOOLEAN AllowImpersonation,
|
PULONG PBytesTransferred, ULONG Timeout, BOOLEAN AllowImpersonation,
|
||||||
PSID Sid);
|
PSID Sid);
|
||||||
FSP_API NTSTATUS FspVersion(PUINT32 PVersion);
|
FSP_API NTSTATUS FspVersion(PUINT32 PVersion);
|
||||||
|
FSP_API PWSTR FspSxsIdent(VOID);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Delay load
|
* Delay load
|
||||||
|
@ -70,7 +70,6 @@ NTSTATUS FspNpUnregister(VOID);
|
|||||||
NTSTATUS FspEventLogRegister(VOID);
|
NTSTATUS FspEventLogRegister(VOID);
|
||||||
NTSTATUS FspEventLogUnregister(VOID);
|
NTSTATUS FspEventLogUnregister(VOID);
|
||||||
|
|
||||||
PWSTR FspSxsIdent(VOID);
|
|
||||||
PWSTR FspSxsSuffix(VOID);
|
PWSTR FspSxsSuffix(VOID);
|
||||||
PWSTR FspSxsAppendSuffix(PWCHAR Buffer, SIZE_T Size, PWSTR Ident);
|
PWSTR FspSxsAppendSuffix(PWCHAR Buffer, SIZE_T Size, PWSTR Ident);
|
||||||
|
|
||||||
|
@ -183,7 +183,7 @@ exit:
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
PWSTR FspSxsIdent(VOID)
|
FSP_API PWSTR FspSxsIdent(VOID)
|
||||||
{
|
{
|
||||||
InitOnceExecuteOnce(&FspSxsIdentInitOnce, FspSxsIdentInitialize, 0, 0);
|
InitOnceExecuteOnce(&FspSxsIdentInitOnce, FspSxsIdentInitialize, 0, 0);
|
||||||
return FspSxsIdentBuf + 1;
|
return FspSxsIdentBuf + 1;
|
||||||
|
@ -61,11 +61,11 @@ static void usage(void)
|
|||||||
"usage: %s COMMAND ARGS\n"
|
"usage: %s COMMAND ARGS\n"
|
||||||
"\n"
|
"\n"
|
||||||
"commands:\n"
|
"commands:\n"
|
||||||
|
" ver print version\n"
|
||||||
" lsvol list file system devices (volumes)\n"
|
" lsvol list file system devices (volumes)\n"
|
||||||
//" list list running file system processes\n"
|
|
||||||
//" kill kill file system process\n"
|
|
||||||
" id [NAME|SID|UID] print user id\n"
|
" id [NAME|SID|UID] print user id\n"
|
||||||
" perm [PATH|SDDL|UID:GID:MODE] print permissions\n",
|
" perm [PATH|SDDL|UID:GID:MODE] print permissions\n"
|
||||||
|
" unload unload driver (requires load driver priv)\n",
|
||||||
PROGNAME);
|
PROGNAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -237,6 +237,29 @@ NTSTATUS FspToolGetSidFromName(PWSTR Name, PSID *PSid)
|
|||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int ver(int argc, wchar_t **argv)
|
||||||
|
{
|
||||||
|
if (1 != argc)
|
||||||
|
usage();
|
||||||
|
|
||||||
|
NTSTATUS Result;
|
||||||
|
UINT32 Version;
|
||||||
|
PWSTR SxsIdent;
|
||||||
|
|
||||||
|
Result = FspVersion(&Version);
|
||||||
|
if (!NT_SUCCESS(Result))
|
||||||
|
return FspWin32FromNtStatus(Result);
|
||||||
|
|
||||||
|
SxsIdent = FspSxsIdent();
|
||||||
|
|
||||||
|
if (L'\0' == SxsIdent[0])
|
||||||
|
info("%u.%u", Version >> 16, Version & 0xFFFF);
|
||||||
|
else
|
||||||
|
info("%u.%u (SxS=%S)", Version >> 16, Version & 0xFFFF, SxsIdent);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static NTSTATUS lsvol_dev(PWSTR DeviceName)
|
static NTSTATUS lsvol_dev(PWSTR DeviceName)
|
||||||
{
|
{
|
||||||
NTSTATUS Result;
|
NTSTATUS Result;
|
||||||
@ -541,6 +564,20 @@ static int perm(int argc, wchar_t **argv)
|
|||||||
return FspWin32FromNtStatus(Result);
|
return FspWin32FromNtStatus(Result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int unload(int argc, wchar_t **argv)
|
||||||
|
{
|
||||||
|
if (1 != argc)
|
||||||
|
usage();
|
||||||
|
|
||||||
|
NTSTATUS Result;
|
||||||
|
|
||||||
|
Result = FspFsctlStopService();
|
||||||
|
if (!NT_SUCCESS(Result))
|
||||||
|
return FspWin32FromNtStatus(Result);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int wmain(int argc, wchar_t **argv)
|
int wmain(int argc, wchar_t **argv)
|
||||||
{
|
{
|
||||||
argc--;
|
argc--;
|
||||||
@ -549,6 +586,9 @@ int wmain(int argc, wchar_t **argv)
|
|||||||
if (0 == argc)
|
if (0 == argc)
|
||||||
usage();
|
usage();
|
||||||
|
|
||||||
|
if (0 == invariant_wcscmp(L"ver", argv[0]))
|
||||||
|
return ver(argc, argv);
|
||||||
|
else
|
||||||
if (0 == invariant_wcscmp(L"lsvol", argv[0]))
|
if (0 == invariant_wcscmp(L"lsvol", argv[0]))
|
||||||
return lsvol(argc, argv);
|
return lsvol(argc, argv);
|
||||||
else
|
else
|
||||||
@ -557,6 +597,9 @@ int wmain(int argc, wchar_t **argv)
|
|||||||
else
|
else
|
||||||
if (0 == invariant_wcscmp(L"perm", argv[0]))
|
if (0 == invariant_wcscmp(L"perm", argv[0]))
|
||||||
return perm(argc, argv);
|
return perm(argc, argv);
|
||||||
|
else
|
||||||
|
if (0 == invariant_wcscmp(L"unload", argv[0]))
|
||||||
|
return unload(argc, argv);
|
||||||
else
|
else
|
||||||
usage();
|
usage();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user