
#ifndef __SYSCALL_H_
#define __SYSCALL_H_

/**
 * @file: syscall.h
 *
 * Hlavickovy soubor k souboru syscall.c. Obsahuje definice funkci a
 * datovych struktur pro zaznamenavani jednotlivych systemovych volani.
 */

#include <ntddk.h>


// Struktura polozky nesouci informace o jednom systemovem volani
typedef struct _SYSCALL_RECORD
{
  // Propojeni vsech polozek do spojoveho seznamu
  LIST_ENTRY Entry;
  // PID procesu, v nemz k systemovemu volani dostlo
  HANDLE PID;
  // TID vlakna, ktere systemove volani provedlo
  HANDLE TID;
  // Cislo systemoveho volani
  ULONG ServiceIndex;
  // Navratova hodnota
  NTSTATUS Status;
  // Cas, kdy se systemove volani udalo
  LARGE_INTEGER Time;
} SYSCALL_RECORD, *PSYSCALL_RECORD;


// Popis vyznamu jednotlivych rutin naleznete u jejich implementace
// v souboru syscall.c.

PSYSCALL_RECORD GetSyscallRecord(VOID);
NTSTATUS SyscallLoggingStart(VOID);
VOID SyscallLoggingStop(VOID);

NTSTATUS SyscallLoggingInit(VOID);


#endif
