Sdílet prostřednictvím


data knihovny Dynamic-Link

Knihovna Dynamic-Link (DLL) může obsahovat globální data nebo místní data.

Rozsah proměnných

Proměnné deklarované jako globální v souboru zdrojového kódu knihovny DLL jsou považovány za globální proměnné kompilátoru a linkeru, ale každý proces, který načte danou knihovnu DLL, získá svou vlastní kopii globálních proměnných knihovny DLL. Rozsah statických proměnných je omezen na blok, ve kterém jsou statické proměnné deklarovány. V důsledku toho má každý proces ve výchozím nastavení vlastní instanci globální a statické proměnné knihovny DLL.

Poznámka

Vývojové nástroje vám můžou umožnit přepsat výchozí chování. Kompilátor Jazyka Visual C++ například podporuje #pragma oddíl a linker podporuje možnost /SECTION. Další informace najdete v dokumentaci, která je součástí vašich vývojových nástrojů.

 

Přidělení dynamické paměti

Pokud knihovna DLL přidělí paměť pomocí některé funkce přidělení paměti (GlobalAlloc, LocalAlloc, HeapAlloca VirtualAlloc), je paměť přidělena do virtuálního adresního prostoru volajícího procesu a je přístupná pouze pro vlákna tohoto procesu.

Knihovna DLL může použít mapování souborů k přidělení paměti, kterou lze sdílet mezi procesy. Obecné informace o tom, jak použít mapování souborů k vytvoření pojmenované sdílené paměti, naleznete v tématu Mapování souborů. Příklad, který používá funkci DllMain k nastavení sdílené paměti pomocí mapování souborů, naleznete v tématu Použití sdílené paměti v knihovně Dynamic-Link.

Místní úložiště vláken

Funkce místního úložiště vlákna (TLS) umožňují knihovně DLL přidělit index pro ukládání a načítání jiné hodnoty pro každé vlákno vícevláknového procesu. Například aplikace tabulky může vytvořit novou instanci stejného vlákna pokaždé, když uživatel otevře novou tabulku. Knihovna DLL poskytující funkce pro různé tabulkové operace může pomocí protokolu TLS ukládat informace o aktuálním stavu každé tabulky (řádek, sloupec atd.). Obecné informace o místním úložišti vláken najdete v tématu místní úložiště vláken. Příklad, který používá funkci DllMain k nastavení místního úložiště vlákna, najdete v tématu Použití místního úložiště vláken vknihovny Dynamic-Link .

Windows Server 2003 a Windows XP: kompilátor Visual C++podporuje syntaxi, která umožňuje deklarovat lokální proměnné vlákna: _declspec(vlákno). Pokud tuto syntaxi použijete v knihovně DLL, nebudete moct knihovnu DLL explicitně načíst pomocí LoadLibrary nebo LoadLibraryEx ve verzích systému Windows před windows Vista. Pokud se knihovna DLL načte explicitně, musíte místo _declspec(vlákna) použít funkce místního úložiště vlákna.