--- /dev/null
+
+#ifndef __NTOS_SERVICE_H
+#define __NTOS_SERVICE_H
+
+
+/* number of entries in the service descriptor tables */
+#define SSDT_MAX_ENTRIES 4
+
+
+#ifndef __USE_W32API
+
+#pragma pack(1)
+
+/* System Service Dispatch Table */
+typedef struct t_SSDT {
+ ULONG SysCallPtr;
+} SSDT, *PSSDT;
+
+/* System Service Parameters Table */
+typedef struct t_SSPT {
+ unsigned int ParamBytes;
+} SSPT, *PSSPT;
+
+typedef struct t_KeServiceDescriptorTableEntry {
+ PSSDT SSDT;
+ PULONG ServiceCounterTable;
+ unsigned int NumberOfServices;
+ PSSPT SSPT;
+
+} SSDT_ENTRY, *PSSDT_ENTRY;
+
+#pragma pack()
+
+#endif /* __USE_W32API */
+
+
+/* --- NTOSKRNL.EXE --- */
+#if defined(__NTOSKRNL__)
+extern
+SSDT_ENTRY
+KeServiceDescriptorTable[SSDT_MAX_ENTRIES] __declspec(dllexport);
+#else
+extern
+SSDT_ENTRY
+KeServiceDescriptorTable[SSDT_MAX_ENTRIES] __declspec(dllimport);
+#endif
+
+extern
+SSDT_ENTRY
+KeServiceDescriptorTableShadow[SSDT_MAX_ENTRIES];
+
+
+#ifndef __USE_W32API
+
+BOOLEAN
+STDCALL
+KeAddSystemServiceTable (
+ PSSDT SSDT,
+ PULONG ServiceCounterTable,
+ ULONG NumberOfServices,
+ PSSPT SSPT,
+ ULONG TableIndex
+ );
+
+#endif /* __USE_W32API */
+
+#endif /* __NTOS_SERVICE_H */
+