+/* === Utilities for SmQryInfo === */\r
+\r
+/**********************************************************************\r
+ * SmGetClientBasicInformation/1\r
+ */\r
+NTSTATUS FASTCALL\r
+SmGetClientBasicInformation (PSM_BASIC_INFORMATION i)\r
+{\r
+ INT Index = 0;\r
+ PSM_CLIENT_DATA Client = NULL;\r
+\r
+ DPRINT("SM: %s called\n", __FUNCTION__);\r
+\r
+ RtlEnterCriticalSection (& SmpClientDirectory.Lock);\r
+\r
+ i->SubSystemCount = SmpClientDirectory.Count;\r
+ i->Unused = 0;\r
+ \r
+ if (SmpClientDirectory.Count > 0)\r
+ {\r
+ Client = SmpClientDirectory.Client;\r
+ while ((NULL != Client) && (Index < SM_QRYINFO_MAX_SS_COUNT))\r
+ {\r
+ i->SubSystem[Index].Id = Client->SubsystemId;\r
+ i->SubSystem[Index].Flags = 0; /* TODO */\r
+ i->SubSystem[Index].ProcessId = 0; /* TODO */\r
+ Client = Client->Next;\r
+ }\r
+ }\r
+\r
+ RtlLeaveCriticalSection (& SmpClientDirectory.Lock);\r
+ return STATUS_SUCCESS;\r
+}\r
+\r
+/**********************************************************************\r
+ * SmGetSubSystemInformation/1\r
+ */\r
+NTSTATUS FASTCALL\r
+SmGetSubSystemInformation (PSM_SUBSYSTEM_INFORMATION i)\r
+{\r
+ DPRINT("SM: %s called\n", __FUNCTION__);\r
+\r
+ return STATUS_NOT_IMPLEMENTED;\r
+}\r
+\r