
#ifndef __MODULEINFO_H_
#define __MODULEINFO_H_

/**
 * @file: moduleinfo.h
 *
 * Hlavickovy modulu pro praci se strukturami MODULE_INFO_ITEM, do kterych
 * si napriklad program ListDll ukada seznamy modulu cilovych procesu.
 */

#include <windows.h>

// Definice struktury MODULE_INFO_ITEM nesouci informace o jednom modulu
typedef struct _MODULE_INFO_ITEM {
  // Odkaz na dalsi strukturu v seznamu
  struct _MODULE_INFO_ITEM *Next;
  // Virtualni adresa zacatku modulu v pameti ciloveho procesu
  PVOID BaseAddress;
  // Velikost modulu ve virtualnim adresovem prostoru
  SIZE_T Size;
  // Jmeno modulu vcetne cesty
  WCHAR Name[1];
} MODULE_INFO_ITEM, *PMODULE_INFO_ITEM;



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

PMODULE_INFO_ITEM ModuleInfoItemAlloc(PVOID ModuleBaseAddress, SIZE_T ModuleSize, PWCHAR ModuleName, SIZE_T ModuleNameLen);
VOID ModuleInfoItemInsert(PMODULE_INFO_ITEM Item, PMODULE_INFO_ITEM ItemToInsert);
VOID ModuleInfoItemFree(PMODULE_INFO_ITEM Item);
VOID ModuleInfoListFree(PMODULE_INFO_ITEM ListStart);

BOOL ModuleInfoInit(VOID);
VOID ModuleInfoFinit(VOID);


#endif
