
#ifndef __TYPEHOOK_H_
#define __TYPEHOOK_H_

/**
 * @file: typehook.c
 *
 * Tento soubor obsahuje definice struktur a podprogramu pro modul pracujici
 * s objekty TypeHook (soubor typehook.c), ktery dovoluje monitorovat
 * operace nad jednotlivymi typy objektu pomoci metody DKOH (Direct
 * Kernel Object Manipulation).
 */


#include <ntddk.h>


// Struktura uchovavajici adresy metod, jejichz volani objekt TypeHook
// dovoluje monitorovat.
typedef struct _HOOK_PROCEDURES {
  PVOID OpenProcedure;
  PVOID CloseProcedure;
  PVOID OkayToCloseProcedure;
  PVOID DeleteProcedure;
} HOOK_PROCEDURES, *PHOOK_PROCEDURES;


// Popis vyznamu jednotlivych funkci naleznete u jejich implementace v
// souboru typehook.c

NTSTATUS TypeHookObjectCreate(POBJECT_TYPE ObjectType, PHOOK_PROCEDURES HookProcedures, PVOID *HookObject);
VOID TypeHookObjectDestroy(PVOID HookObject);
NTSTATUS TypeHookObjectActivate(PVOID HookObject, PHOOK_PROCEDURES OriginalProcedures);
VOID TypeHookObjectDeactivate(PVOID HookObject);

NTSTATUS TypeHookInit(VOID);
VOID TypeHookFinit(VOID);


#endif
