[NET] Add the NET STATISTICS command
authorEric Kohl <eric.kohl@reactos.org>
Sun, 8 Apr 2018 18:04:11 +0000 (20:04 +0200)
committerEric Kohl <eric.kohl@reactos.org>
Sun, 8 Apr 2018 19:27:05 +0000 (21:27 +0200)
13 files changed:
base/applications/network/net/CMakeLists.txt
base/applications/network/net/cmdStatistics.c [new file with mode: 0644]
base/applications/network/net/help.c
base/applications/network/net/lang/en-US.rc
base/applications/network/net/lang/es-ES.rc
base/applications/network/net/lang/ro-RO.rc
base/applications/network/net/lang/ru-RU.rc
base/applications/network/net/lang/tr-TR.rc
base/applications/network/net/lang/zh-CN.rc
base/applications/network/net/lang/zh-TW.rc
base/applications/network/net/main.c
base/applications/network/net/net.h
base/applications/network/net/resource.h

index d6ce980..3555509 100644 (file)
@@ -12,6 +12,7 @@ list(APPEND SOURCE
     cmdLocalGroup.c
     cmdPause.c
     cmdStart.c
+    cmdStatistics.c
     cmdStop.c
     cmdUse.c
     cmdUser.c
diff --git a/base/applications/network/net/cmdStatistics.c b/base/applications/network/net/cmdStatistics.c
new file mode 100644 (file)
index 0000000..7a048c0
--- /dev/null
@@ -0,0 +1,195 @@
+/*
+ * COPYRIGHT:       See COPYING in the top level directory
+ * PROJECT:         ReactOS net command
+ * FILE:            base/applications/network/net/cmdStatistics.c
+ * PROGRAMMERS:     Eric Kohl <eric.kohl@reactos.org>
+ */
+
+#include "net.h"
+
+static
+INT
+DisplayServerStatistics(VOID)
+{
+    PSERVER_INFO_100 ServerInfo = NULL;
+    PSTAT_SERVER_0 StatisticsInfo = NULL;
+    LARGE_INTEGER LargeValue;
+    NET_API_STATUS Status;
+
+    Status = NetServerGetInfo(NULL, 100, (PBYTE*)&ServerInfo);
+    if (Status != NERR_Success)
+        goto done;
+
+    Status = NetStatisticsGet(NULL,
+                              SERVICE_SERVER,
+                              0,
+                              0,
+                              (LPBYTE*)&StatisticsInfo);
+    if (Status != NERR_Success)
+        goto done;
+
+    ConResPrintf(StdOut, IDS_STATISTICS_SERVER_NAME, ServerInfo->sv100_name);
+
+    printf("Statistik since %lu\n\n\n", StatisticsInfo->sts0_start);
+
+    printf("Sessions accepted %lu\n", StatisticsInfo->sts0_sopens);
+    printf("Sessions timed-out %lu\n", StatisticsInfo->sts0_stimedout);
+    printf("Sessions errored-out %lu\n\n", StatisticsInfo->sts0_serrorout);
+
+    LargeValue.u.LowPart = StatisticsInfo->sts0_bytessent_low;
+    LargeValue.u.HighPart = StatisticsInfo->sts0_bytessent_high;
+    printf("Kilobytes sent %I64u\n", LargeValue.QuadPart / 1024);
+
+    LargeValue.u.LowPart = StatisticsInfo->sts0_bytesrcvd_low;
+    LargeValue.u.HighPart = StatisticsInfo->sts0_bytesrcvd_high;
+    printf("Kilobytes received %I64u\n\n", LargeValue.QuadPart / 1024);
+
+    printf("Mean response time (msec) %lu\n\n", StatisticsInfo->sts0_avresponse);
+
+    printf("System errors %lu\n", StatisticsInfo->sts0_syserrors);
+    printf("Permission violations %lu\n", StatisticsInfo->sts0_permerrors);
+    printf("Password violations %lu\n\n", StatisticsInfo->sts0_pwerrors);
+
+    printf("Files accessed %lu\n", StatisticsInfo->sts0_fopens);
+    printf("Communication devices accessed %lu\n", StatisticsInfo->sts0_devopens);
+    printf("Print jobs spooled %lu\n\n", StatisticsInfo->sts0_jobsqueued);
+
+    printf("Times buffers exhausted\n\n");
+    printf("  Big buffers %lu\n", StatisticsInfo->sts0_bigbufneed);
+    printf("  Request buffers %lu\n\n", StatisticsInfo->sts0_reqbufneed);
+
+done:
+    if (StatisticsInfo != NULL)
+        NetApiBufferFree(StatisticsInfo);
+
+    if (ServerInfo != NULL)
+        NetApiBufferFree(ServerInfo);
+
+    return 0;
+}
+
+
+static
+INT
+DisplayWorkstationStatistics(VOID)
+{
+    PWKSTA_INFO_100 WorkstationInfo = NULL;
+    PSTAT_WORKSTATION_0 StatisticsInfo = NULL;
+    NET_API_STATUS Status;
+
+    Status = NetWkstaGetInfo(NULL,
+                             100,
+                             (PBYTE*)&WorkstationInfo);
+    if (Status != NERR_Success)
+        goto done;
+
+    Status = NetStatisticsGet(NULL,
+                              SERVICE_SERVER,
+                              0,
+                              0,
+                              (LPBYTE*)&StatisticsInfo);
+    if (Status != NERR_Success)
+        goto done;
+
+    ConResPrintf(StdOut, IDS_STATISTICS_WORKSTATION_NAME, WorkstationInfo->wki100_computername);
+
+    printf("Statistik since %I64u\n\n\n", StatisticsInfo->StatisticsStartTime.QuadPart);
+
+    printf("Bytes received %I64u\n", StatisticsInfo->BytesReceived.QuadPart);
+    printf("Server Message Blocks (SMBs) received %I64u\n", StatisticsInfo->SmbsReceived.QuadPart);
+    printf("Bytes transmitted %I64u\n", StatisticsInfo->BytesTransmitted.QuadPart);
+    printf("Server Message Blocks (SMBs) transmitted %I64u\n", StatisticsInfo->SmbsTransmitted.QuadPart);
+    printf("Read operations %lu\n", StatisticsInfo->ReadOperations);
+    printf("Write operations %lu\n", StatisticsInfo->WriteOperations);
+    printf("Raw reads denied %lu\n", StatisticsInfo->RawReadsDenied);
+    printf("Raw writes denied %lu\n\n", StatisticsInfo->RawWritesDenied);
+
+    printf("Network errors %lu\n", StatisticsInfo->NetworkErrors);
+    printf("Connections made %lu\n", StatisticsInfo->CoreConnects +
+                                     StatisticsInfo->Lanman20Connects +
+                                     StatisticsInfo->Lanman21Connects +
+                                     StatisticsInfo->LanmanNtConnects);
+    printf("Reconnections made %lu\n", StatisticsInfo->Reconnects);
+    printf("Server disconnects %lu\n\n", StatisticsInfo->ServerDisconnects);
+
+    printf("Sessions started %lu\n", StatisticsInfo->Sessions);
+    printf("Hung sessions %lu\n", StatisticsInfo->HungSessions);
+    printf("Failed sessions %lu\n", StatisticsInfo->FailedSessions);
+    printf("Failed operations %lu\n", StatisticsInfo->InitiallyFailedOperations +
+                                      StatisticsInfo->FailedCompletionOperations);
+    printf("Use count %lu\n", StatisticsInfo->UseCount);
+    printf("Failed use count %lu\n\n", StatisticsInfo->FailedUseCount);
+
+done:
+    if (StatisticsInfo != NULL)
+        NetApiBufferFree(StatisticsInfo);
+
+    if (WorkstationInfo != NULL)
+        NetApiBufferFree(WorkstationInfo);
+
+    return 0;
+}
+
+
+INT
+cmdStatistics(
+    INT argc,
+    WCHAR **argv)
+{
+    INT i, result = 0;
+    BOOL bServer = FALSE;
+    BOOL bWorkstation = FALSE;
+
+    for (i = 2; i < argc; i++)
+    {
+        if (_wcsicmp(argv[i], L"server") == 0)
+        {
+            if (bWorkstation == FALSE)
+                bServer = TRUE;
+            continue;
+        }
+
+        if (_wcsicmp(argv[i], L"workstation") == 0)
+        {
+            if (bServer == FALSE)
+                bWorkstation = TRUE;
+            continue;
+        }
+
+        if (_wcsicmp(argv[i], L"help") == 0)
+        {
+            /* Print short syntax help */
+            ConResPuts(StdOut, IDS_GENERIC_SYNTAX);
+            ConResPuts(StdOut, IDS_STATISTICS_SYNTAX);
+            return 0;
+        }
+
+        if (_wcsicmp(argv[i], L"/help") == 0)
+        {
+            /* Print full help text*/
+            ConResPuts(StdOut, IDS_GENERIC_SYNTAX);
+            ConResPuts(StdOut, IDS_STATISTICS_SYNTAX);
+            ConResPuts(StdOut, IDS_STATISTICS_HELP_1);
+            ConResPuts(StdOut, IDS_STATISTICS_HELP_2);
+            return 0;
+        }
+    }
+
+    if (bServer)
+    {
+        result = DisplayServerStatistics();
+    }
+    else if (bWorkstation)
+    {
+        result = DisplayWorkstationStatistics();
+    }
+    else
+    {
+        ConResPuts(StdOut, IDS_STATISTICS_TEXT);
+    }
+
+    if (result == 0)
+        ConResPuts(StdOut, IDS_ERROR_NO_ERROR);
+
+    return result;
+}
\ No newline at end of file
index f354ee4..9398c45 100644 (file)
@@ -162,7 +162,8 @@ INT cmdHelp(INT argc, WCHAR **argv)
     if (_wcsicmp(argv[2], L"STATISTICS") == 0)
     {
         ConResPuts(StdOut, IDS_STATISTICS_SYNTAX);
-        ConResPuts(StdOut, IDS_STATISTICS_HELP);
+        ConResPuts(StdOut, IDS_STATISTICS_HELP_1);
+        ConResPuts(StdOut, IDS_STATISTICS_HELP_2);
         return 0;
     }
 
index 3b89b49..f778c5a 100644 (file)
@@ -125,8 +125,13 @@ message and suggested actions you can take to solve the problem.\n\n"
     IDS_START_HELP_3 "When typed at the command prompt, service name of two words or more must\n\
 be enclosed in quotation marks. For example, NET START ""NET LOGON""\n\
 starts the net logon service.\n\n"
-    IDS_STATISTICS_SYNTAX "NET STATISTICS ...\n\n"
-    IDS_STATISTICS_HELP "STATISTICS\n...\n\n"
+    IDS_STATISTICS_SYNTAX "NET STATISTICS [SERVER | WORKSTATION]\n\n"
+    IDS_STATISTICS_HELP_1 "NET STATISTICS displays the statisticslog for the local Workstation or\n\
+Server service. Used without parameters, NET STATISTICS displays\n\
+the services for which statistics are available.\n\n"
+    IDS_STATISTICS_HELP_2 "SERVER        Displays the Server service statistics.\n\
+WORKSTATION   Displays the Workstation service statistics.\n\n"
+
     IDS_STOP_SYNTAX "NET STOP service\n\n"
     IDS_STOP_HELP_1 "NET STOP stops services.\n\n"
     IDS_STOP_HELP_2 "service   The name of the service to be stopped.\n\n"
@@ -186,6 +191,11 @@ service can stop others. Some services cannot be stopped.\n\n"
     IDS_LOCALGROUP_COMMENT "Comment"
     IDS_LOCALGROUP_MEMBERS "Members"
 
+    IDS_STATISTICS_TEXT "Statistics are available for the following services:\n\n\
+   Server\n   Workstation\n\n"
+    IDS_STATISTICS_SERVER_NAME "Server statistics for \\\\%s\n\n"
+    IDS_STATISTICS_WORKSTATION_NAME "Workstation statistics for \\\\%s\n\n"
+
     IDS_USER_ACCOUNTS "User accounts for \\\\%s"
     IDS_USER_NAME "User name"
     IDS_USER_FULL_NAME "Full name"
@@ -227,5 +237,5 @@ service can stop others. Some services cannot be stopped.\n\n"
     IDS_ERROR_OPTION_NOT_SUPPORTED "The %s option is not supported yet.\n"
     IDS_ERROR_INVALID_OPTION_VALUE "You entered an invalid value for the %s option.\n"
     IDS_ERROR_SYSTEM_ERROR "The system error %d happened.\n"
-    IDS_ERROR_NO_ERROR "The command completed successfully.\n\n\n"
+    IDS_ERROR_NO_ERROR "The command completed successfully.\n\n"
 END
index 9db547f..54dbacf 100644 (file)
@@ -128,8 +128,12 @@ message and suggested actions you can take to solve the problem.\n\n"
     IDS_START_HELP_3 "When typed at the command prompt, service name of two words or more must\n\
 be enclosed in quotation marks. For example, NET START ""NET LOGON""\n\
 starts the net logon service.\n\n"
-    IDS_STATISTICS_SYNTAX "NET STATISTICS ...\n\n"
-    IDS_STATISTICS_HELP "STATISTICS\n...\n\n"
+    IDS_STATISTICS_SYNTAX "NET STATISTICS [SERVER | WORKSTATION]\n\n"
+    IDS_STATISTICS_HELP_1 "NET STATISTICS displays the statisticslog for the local Workstation or\n\
+Server service. Used without parameters, NET STATISTICS displays\n\
+the services for which statistics are available.\n\n"
+    IDS_STATISTICS_HELP_2 "SERVER        Displays the Server service statistics.\n\
+WORKSTATION   Displays the Workstation service statistics.\n\n"
     IDS_STOP_SYNTAX "NET STOP <nombre del servicio>\n\n"
     IDS_STOP_HELP_1 "NET STOP stops services.\n\n"
     IDS_STOP_HELP_2 "service   The name of the service to be stopped.\n\n"
@@ -188,6 +192,11 @@ service can stop others. Some services cannot be stopped.\n\n"
     IDS_LOCALGROUP_COMMENT "Comentario"
     IDS_LOCALGROUP_MEMBERS "Miembros"
 
+    IDS_STATISTICS_TEXT "Statistics are available for the following services:\n\n\
+   Server\n   Workstation\n\n"
+    IDS_STATISTICS_SERVER_NAME "Server statistics for \\\\%s\n\n"
+    IDS_STATISTICS_WORKSTATION_NAME "Workstation statistics for \\\\%s\n\n"
+
     IDS_USER_ACCOUNTS "Cuentas de usuario en \\\\%s"
     IDS_USER_NAME "Nombre de usuario"
     IDS_USER_FULL_NAME "Nombre completo"
@@ -229,5 +238,5 @@ service can stop others. Some services cannot be stopped.\n\n"
     IDS_ERROR_OPTION_NOT_SUPPORTED "La opción %s todavía no está disponible.\n"
     IDS_ERROR_INVALID_OPTION_VALUE "El valor para la opción %s no es válido.\n"
     IDS_ERROR_SYSTEM_ERROR "The system error %d happened.\n"
-    IDS_ERROR_NO_ERROR "The command completed successfully.\n\n\n"
+    IDS_ERROR_NO_ERROR "The command completed successfully.\n\n"
 END
index 4f0e3e2..a97a9b9 100644 (file)
@@ -131,8 +131,12 @@ message and suggested actions you can take to solve the problem.\n\n"
     IDS_START_HELP_3 "When typed at the command prompt, service name of two words or more must\n\
 be enclosed in quotation marks. For example, NET START ""NET LOGON""\n\
 starts the net logon service.\n\n"
-    IDS_STATISTICS_SYNTAX "NET STATISTICS ...\n\n"
-    IDS_STATISTICS_HELP "STATISTICS\n...\n\n"
+    IDS_STATISTICS_SYNTAX "NET STATISTICS [SERVER | WORKSTATION]\n\n"
+    IDS_STATISTICS_HELP_1 "NET STATISTICS displays the statisticslog for the local Workstation or\n\
+Server service. Used without parameters, NET STATISTICS displays\n\
+the services for which statistics are available.\n\n"
+    IDS_STATISTICS_HELP_2 "SERVER        Displays the Server service statistics.\n\
+WORKSTATION   Displays the Workstation service statistics.\n\n"
     IDS_STOP_SYNTAX "NET STOP <nume serviciu>\n\n"
     IDS_STOP_HELP_1 "NET STOP stops services.\n\n"
     IDS_STOP_HELP_2 "service   The name of the service to be stopped.\n\n"
@@ -191,6 +195,11 @@ service can stop others. Some services cannot be stopped.\n\n"
     IDS_LOCALGROUP_COMMENT "Comentariu"
     IDS_LOCALGROUP_MEMBERS "Membri"
 
+    IDS_STATISTICS_TEXT "Statistics are available for the following services:\n\n\
+   Server\n   Workstation\n\n"
+    IDS_STATISTICS_SERVER_NAME "Server statistics for \\\\%s\n\n"
+    IDS_STATISTICS_WORKSTATION_NAME "Workstation statistics for \\\\%s\n\n"
+
     IDS_USER_ACCOUNTS "Conturi de utilizator pentru \\\\%s"
     IDS_USER_NAME "Nume utilizator"
     IDS_USER_FULL_NAME "Nume complet"
@@ -232,5 +241,5 @@ service can stop others. Some services cannot be stopped.\n\n"
     IDS_ERROR_OPTION_NOT_SUPPORTED "Opțiunea %s încă nu este admisă.\n"
     IDS_ERROR_INVALID_OPTION_VALUE "Ați introdus o valoare nevalidă pentru opțiunea %s.\n"
     IDS_ERROR_SYSTEM_ERROR "A survenit eroarea de sistem %d.\n"
-    IDS_ERROR_NO_ERROR "Comanda a fost executată cu succes.\n\n\n"
+    IDS_ERROR_NO_ERROR "Comanda a fost executată cu succes.\n\n"
 END
index f60c5ad..87bb958 100644 (file)
@@ -127,8 +127,12 @@ message and suggested actions you can take to solve the problem.\n\n"
     IDS_START_HELP_3 "When typed at the command prompt, service name of two words or more must\n\
 be enclosed in quotation marks. For example, NET START ""NET LOGON""\n\
 starts the net logon service.\n\n"
-    IDS_STATISTICS_SYNTAX "NET STATISTICS ...\n\n"
-    IDS_STATISTICS_HELP "STATISTICS\n...\n\n"
+    IDS_STATISTICS_SYNTAX "NET STATISTICS [SERVER | WORKSTATION]\n\n"
+    IDS_STATISTICS_HELP_1 "NET STATISTICS displays the statisticslog for the local Workstation or\n\
+Server service. Used without parameters, NET STATISTICS displays\n\
+the services for which statistics are available.\n\n"
+    IDS_STATISTICS_HELP_2 "SERVER        Displays the Server service statistics.\n\
+WORKSTATION   Displays the Workstation service statistics.\n\n"
     IDS_STOP_SYNTAX "NET STOP <имя_службы>\n\n"
     IDS_STOP_HELP_1 "NET STOP stops services.\n\n"
     IDS_STOP_HELP_2 "service   The name of the service to be stopped.\n\n"
@@ -187,6 +191,11 @@ service can stop others. Some services cannot be stopped.\n\n"
     IDS_LOCALGROUP_COMMENT "Комментарий"
     IDS_LOCALGROUP_MEMBERS "Члены"
 
+    IDS_STATISTICS_TEXT "Statistics are available for the following services:\n\n\
+   Server\n   Workstation\n\n"
+    IDS_STATISTICS_SERVER_NAME "Server statistics for \\\\%s\n\n"
+    IDS_STATISTICS_WORKSTATION_NAME "Workstation statistics for \\\\%s\n\n"
+
     IDS_USER_ACCOUNTS "Учетные записи пользователей для \\\\%s"
     IDS_USER_NAME "Имя пользователя"
     IDS_USER_FULL_NAME "Полное имя"
@@ -228,5 +237,5 @@ service can stop others. Some services cannot be stopped.\n\n"
     IDS_ERROR_OPTION_NOT_SUPPORTED "Опция %s в данный момент не поддерживается.\n"
     IDS_ERROR_INVALID_OPTION_VALUE "Вы ввели неверный данные для данной опции %s.\n"
     IDS_ERROR_SYSTEM_ERROR "Произошла системная ошибка: %d.\n"
-    IDS_ERROR_NO_ERROR "Команда успешно выполнена.\n\n\n"
+    IDS_ERROR_NO_ERROR "Команда успешно выполнена.\n\n"
 END
index a9a3863..3930ce7 100644 (file)
@@ -127,8 +127,12 @@ message and suggested actions you can take to solve the problem.\n\n"
     IDS_START_HELP_3 "When typed at the command prompt, service name of two words or more must\n\
 be enclosed in quotation marks. For example, NET START ""NET LOGON""\n\
 starts the net logon service.\n\n"
-    IDS_STATISTICS_SYNTAX "NET STATISTICS ...\n\n"
-    IDS_STATISTICS_HELP "STATISTICS\n...\n\n"
+    IDS_STATISTICS_SYNTAX "NET STATISTICS [SERVER | WORKSTATION]\n\n"
+    IDS_STATISTICS_HELP_1 "NET STATISTICS displays the statisticslog for the local Workstation or\n\
+Server service. Used without parameters, NET STATISTICS displays\n\
+the services for which statistics are available.\n\n"
+    IDS_STATISTICS_HELP_2 "SERVER        Displays the Server service statistics.\n\
+WORKSTATION   Displays the Workstation service statistics.\n\n"
     IDS_STOP_SYNTAX "NET STOP <Hizmet Adı>\n\n"
     IDS_STOP_HELP_1 "NET STOP stops services.\n\n"
     IDS_STOP_HELP_2 "service   The name of the service to be stopped.\n\n"
@@ -187,6 +191,11 @@ service can stop others. Some services cannot be stopped.\n\n"
     IDS_LOCALGROUP_COMMENT "Açıklama"
     IDS_LOCALGROUP_MEMBERS "Üyeler"
 
+    IDS_STATISTICS_TEXT "Statistics are available for the following services:\n\n\
+   Server\n   Workstation\n\n"
+    IDS_STATISTICS_SERVER_NAME "Server statistics for \\\\%s\n\n"
+    IDS_STATISTICS_WORKSTATION_NAME "Workstation statistics for \\\\%s\n\n"
+
     IDS_USER_ACCOUNTS "\\\\%s için kullanıcı hesapları"
     IDS_USER_NAME "Kullanıcı adı"
     IDS_USER_FULL_NAME "Tüm ad"
@@ -228,5 +237,5 @@ service can stop others. Some services cannot be stopped.\n\n"
     IDS_ERROR_OPTION_NOT_SUPPORTED "%s seçeneği daha desteklenmiyor.\n"
     IDS_ERROR_INVALID_OPTION_VALUE "%s seçeneği için geçersiz bir değer girdiniz.\n"
     IDS_ERROR_SYSTEM_ERROR "%d dizge hatâsı oldu.\n"
-    IDS_ERROR_NO_ERROR "Komut başarılı bir şekilde çalıştırıldı.\n\n\n"
+    IDS_ERROR_NO_ERROR "Komut başarılı bir şekilde çalıştırıldı.\n\n"
 END
index a8946a0..6c6a469 100644 (file)
@@ -127,8 +127,12 @@ message and suggested actions you can take to solve the problem.\n\n"
     IDS_START_HELP_3 "When typed at the command prompt, service name of two words or more must\n\
 be enclosed in quotation marks. For example, NET START ""NET LOGON""\n\
 starts the net logon service.\n\n"
-    IDS_STATISTICS_SYNTAX "NET STATISTICS ...\n\n"
-    IDS_STATISTICS_HELP "STATISTICS\n...\n\n"
+    IDS_STATISTICS_SYNTAX "NET STATISTICS [SERVER | WORKSTATION]\n\n"
+    IDS_STATISTICS_HELP_1 "NET STATISTICS displays the statisticslog for the local Workstation or\n\
+Server service. Used without parameters, NET STATISTICS displays\n\
+the services for which statistics are available.\n\n"
+    IDS_STATISTICS_HELP_2 "SERVER        Displays the Server service statistics.\n\
+WORKSTATION   Displays the Workstation service statistics.\n\n"
     IDS_STOP_SYNTAX "NET STOP service\n\n"
     IDS_STOP_HELP_1 "NET STOP stops services.\n\n"
     IDS_STOP_HELP_2 "service   The name of the service to be stopped.\n\n"
@@ -187,6 +191,11 @@ service can stop others. Some services cannot be stopped.\n\n"
     IDS_LOCALGROUP_COMMENT "注释"
     IDS_LOCALGROUP_MEMBERS "成员"
 
+    IDS_STATISTICS_TEXT "Statistics are available for the following services:\n\n\
+   Server\n   Workstation\n\n"
+    IDS_STATISTICS_SERVER_NAME "Server statistics for \\\\%s\n\n"
+    IDS_STATISTICS_WORKSTATION_NAME "Workstation statistics for \\\\%s\n\n"
+
     IDS_USER_ACCOUNTS "\\\\%s 的用户帐户"
     IDS_USER_NAME "用户名"
     IDS_USER_FULL_NAME "全名"
@@ -228,5 +237,5 @@ service can stop others. Some services cannot be stopped.\n\n"
     IDS_ERROR_OPTION_NOT_SUPPORTED "尚不支持 %s 选项。\n"
     IDS_ERROR_INVALID_OPTION_VALUE "您输入了 %s 选项的无效的值。\n"
     IDS_ERROR_SYSTEM_ERROR "发生了系统错误 %d。\n"
-    IDS_ERROR_NO_ERROR "命令执行成功。\n\n\n"
+    IDS_ERROR_NO_ERROR "命令执行成功。\n\n"
 END
index 8f400f4..ff2c74c 100644 (file)
@@ -127,8 +127,12 @@ message and suggested actions you can take to solve the problem.\n\n"
     IDS_START_HELP_3 "When typed at the command prompt, service name of two words or more must\n\
 be enclosed in quotation marks. For example, NET START ""NET LOGON""\n\
 starts the net logon service.\n\n"
-    IDS_STATISTICS_SYNTAX "NET STATISTICS ...\n\n"
-    IDS_STATISTICS_HELP "STATISTICS\n...\n\n"
+    IDS_STATISTICS_SYNTAX "NET STATISTICS [SERVER | WORKSTATION]\n\n"
+    IDS_STATISTICS_HELP_1 "NET STATISTICS displays the statisticslog for the local Workstation or\n\
+Server service. Used without parameters, NET STATISTICS displays\n\
+the services for which statistics are available.\n\n"
+    IDS_STATISTICS_HELP_2 "SERVER        Displays the Server service statistics.\n\
+WORKSTATION   Displays the Workstation service statistics.\n\n"
     IDS_STOP_SYNTAX "NET STOP <服務名稱>\n\n"
     IDS_STOP_HELP_1 "NET STOP stops services.\n\n"
     IDS_STOP_HELP_2 "service   The name of the service to be stopped.\n\n"
@@ -187,6 +191,11 @@ service can stop others. Some services cannot be stopped.\n\n"
     IDS_LOCALGROUP_COMMENT "評論"
     IDS_LOCALGROUP_MEMBERS "成員"
 
+    IDS_STATISTICS_TEXT "Statistics are available for the following services:\n\n\
+   Server\n   Workstation\n\n"
+    IDS_STATISTICS_SERVER_NAME "Server statistics for \\\\%s\n\n"
+    IDS_STATISTICS_WORKSTATION_NAME "Workstation statistics for \\\\%s\n\n"
+
     IDS_USER_ACCOUNTS "使用者帳戶 \\\\%s"
     IDS_USER_NAME "使用者名稱"
     IDS_USER_FULL_NAME "全名"
@@ -228,5 +237,5 @@ service can stop others. Some services cannot be stopped.\n\n"
     IDS_ERROR_OPTION_NOT_SUPPORTED "尚不支援 %s 選項。\n"
     IDS_ERROR_INVALID_OPTION_VALUE "您輸入了無效的值為 %s 選項。\n"
     IDS_ERROR_SYSTEM_ERROR "The system error %d happened.\n"
-    IDS_ERROR_NO_ERROR "The command completed successfully.\n\n\n"
+    IDS_ERROR_NO_ERROR "The command completed successfully.\n\n"
 END
index 2b572b4..5b2ad60 100644 (file)
@@ -36,7 +36,7 @@ COMMAND cmds[] =
     {L"session",    unimplemented},
     {L"share",      unimplemented},
     {L"start",      cmdStart},
-    {L"statistics", unimplemented},
+    {L"statistics", cmdStatistics},
     {L"stop",       cmdStop},
     {L"time",       unimplemented},
     {L"use",        cmdUse},
index 711528f..a595166 100644 (file)
@@ -53,6 +53,7 @@ INT cmdHelpMsg(INT argc, WCHAR **argv);
 INT cmdLocalGroup(INT argc, WCHAR **argv);
 INT cmdPause(INT argc, WCHAR **argv);
 INT cmdStart(INT argc, WCHAR **argv);
+INT cmdStatistics(INT argc, WCHAR **argv);
 INT cmdStop(INT argc, WCHAR **argv);
 INT cmdUse(INT argc, WCHAR **argv);
 INT cmdUser(INT argc, WCHAR **argv);
index edcb94c..0c53afc 100644 (file)
 #define IDS_START_HELP_2         153
 #define IDS_START_HELP_3         154
 #define IDS_STATISTICS_SYNTAX    155
-#define IDS_STATISTICS_HELP      156
-#define IDS_STOP_SYNTAX          157
-#define IDS_STOP_HELP_1          158
-#define IDS_STOP_HELP_2          159
-#define IDS_STOP_HELP_3          160
-#define IDS_TIME_SYNTAX          161
-#define IDS_TIME_HELP            162
-#define IDS_USE_SYNTAX           163
-#define IDS_USE_HELP             164
-#define IDS_USER_SYNTAX          165
-#define IDS_USER_HELP            166
-#define IDS_VIEW_SYNTAX          167
-#define IDS_VIEW_HELP            168
-#define IDS_NET_SYNTAX           169
+#define IDS_STATISTICS_HELP_1    156
+#define IDS_STATISTICS_HELP_2    157
+#define IDS_STOP_SYNTAX          158
+#define IDS_STOP_HELP_1          159
+#define IDS_STOP_HELP_2          160
+#define IDS_STOP_HELP_3          161
+#define IDS_TIME_SYNTAX          162
+#define IDS_TIME_HELP            163
+#define IDS_USE_SYNTAX           164
+#define IDS_USE_HELP             165
+#define IDS_USER_SYNTAX          166
+#define IDS_USER_HELP            167
+#define IDS_VIEW_SYNTAX          168
+#define IDS_VIEW_HELP            169
+#define IDS_NET_SYNTAX           170
 
 #define IDS_ACCOUNTS_FORCE_LOGOFF      200
 #define IDS_ACCOUNTS_LOGOFF_SECONDS    201
 #define IDS_CONFIG_WORKSTATION_LOGON    245
 
 
-#define IDS_LOCALGROUP_ALIASES         300
-#define IDS_LOCALGROUP_ALIAS_NAME      301
-#define IDS_LOCALGROUP_COMMENT         302
-#define IDS_LOCALGROUP_MEMBERS         303
+#define IDS_LOCALGROUP_ALIASES          300
+#define IDS_LOCALGROUP_ALIAS_NAME       301
+#define IDS_LOCALGROUP_COMMENT          302
+#define IDS_LOCALGROUP_MEMBERS          303
+
+#define IDS_STATISTICS_TEXT             320
+#define IDS_STATISTICS_SERVER_NAME      321
+#define IDS_STATISTICS_WORKSTATION_NAME 322
 
 #define IDS_USER_ACCOUNTS              449
 #define IDS_USER_NAME                  450