PB173 - Systémové programování Windows Úkol 04 service client event logregistry repository Vyvořte funkci vlákna ThreadRepositoryStore(), která:  bude přijímat příkaz který obsahuje: o příkaz k ukončení threadu nebo o cestu a jméno souboru.  Vlákno uloží přijatý soubor do pevně dané cesty.  Jméno cílového souboru bude kromě originálního názvu obsahovat i prefix s Id souboru. Id bude číselná hodnota určující pořadí uloženého souboru (od 0).  Vlákno do příkazu uloží návratovou hodnotu. Příklad: 1. soubor C:\soubor.txt bude uložen do C:\repository\0.Soubor.txt 2. soubor C:\soubor.docx bude uložen do C:\repository\1.Soubor.docx Vytvořte funkci SendCommandtoRepositoryStore() která:  posílá příkaz vláknu ThreadRepositoryStore().  Veškeré synchronizační objekty i jméno souboru přijímá jako parametr. Vytvořte program, který:  ve zdrojové adresáři (pevně daném v program) nalezne všechny soubory a pomocí funkce SendCommandtoRepositoryStore() je pošle do Repository.  Program před procházením adresáře vytvoří vlákno ThreadRepositoryStore.  Program po ukončení procházení adresáře ukončí vlákno (pošle příkaz k ukončení) a vyčká jeho konce.  Program se bude jmenovat Service.VaseJmenoAPrijmeni (Příklad: Service.RomanStepanek) Tipy:  Pro kopírování souboru můžete použít funkci CopyFile().  Pro příkaz zasílaný do vlákna si vytvořte samostatnou strukturu, tedy například: -SourceFilename : wchar_t -Status : signed long -EndThread : bool StCommand  Samotný komunikační kanál bude tvořit jedna statická proměnná, tedy například: StCommand command;  Doporučené synchronizační schéma: ThreadRepositoryStore Wait: EventDataIn SetEvent: EventDataProcessed Zpracování příkazu SendCommandToRepositoryStore Lock SetEvent: EventDataIn Unlock Wait: EventDataProcessed Vytvoření příkazu Zpracování příkazu Úkol 04 – bonus Proveďte úkol 04 s následující úpravou: (+2B)  Jestli bude použit zámek typu mutex nebo kritická sekce, bude možné volit změnou jediné statické proměnné typu bool. (+2B)  Každá funkce SendCommandtoRepositoryStore je volána v samostatném vlákně. Takto vytvořené vlákna pracují paralelně. Program počká na dokončení všech vláken.