Registrace nového uživatele     Návod     Kluby     Archív  Lopuchu     Lopuch.cz  

Tolik rozruchu
jen v Lopuchu

Lopuch.cz

Jméno:
Heslo:
Podpora LCD:
 
Klub Programování [ŽP: neomezená] (kategorie Programování) moderuje tvx.
Archiv
  Nastavení klubu     Nastavení práv     Homepage     Anketa     Přítomní     Oblíbené     Lopuch     Kategorie  
autor: 
text: 
vyplnit a 
Help
 Titulek, text příspěvku  
Opište pozpátku následující text bez prostředního znaku: zmrnnsi
[ 857 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  
johny_g Johny_G - Relaxační terapie pro lopušáky ZDARMA! 29.2.2008 22:40  889
wencman [884]: Ó, to je pěkné! Omlouvám se, že ti nepomůžu, ale zajímá mě ten formát. Existuje něco na jednoduchou konverzi z MIDI do MEI? Google hází samý balast.
bredy 28.2.2008 16:32  888
Jak bezpečně ukončít vlákno z DllMainČlánek o palčivém problému, na který jsem drahnou dobu hledal řešení po různých internetových diskuzí a fórech. Nakonec se mi podařilo najít řešení svépomoci. A protože jsem člověk otevřený, rád se s vámi o tom podělím

Jak bezpečně ukončit vlákno z DllMain
wencman 28.2.2008 14:23  887
Tessien: ještě mě napadlo, jestli ti to neháže žádné chyby, dokážeš pak ten vzorový zápis zobrazit pomocí XSL do grafické podoby? Jestli jo, jakým způsobem se to dělá - na níže uvedených stránkách jsem přesný postup nenašel...
wencman 28.2.2008 14:16  886
Tessien:aha, no jsem v práci, ale večer to doma opíšu a pošlu. Každopádně používám editor XmlPAD. Možná to špatně zapisuju. Můžeš, prosím, napsat deklaraci (myslím, že se tak nazývá několik prvních řádků kódu)?
tessien Tessien Of course slavery is the worst thing - that ever happened. But maybe... 28.2.2008 13:56  885
wencman [884]: na zbezny pohled to vypada OK, jake presne chybi ti to hazi?
wencman 28.2.2008 13:45  884
Hudba přes XMLAhoj, potýkám se notovým zápisem hudby v XML, nejsem profík programátor, ale muzikant. Pro zápis not v XML sice existuje editor Finale 2006 s pluginem Dolet, ale není to moc dokonalé. Dokonalejší je tzv. formát MEI založený na platformě XML. V XML editoru mi ale kontrola pořád zobrazuje chyby, ikdyž načtu vzorový zápis skladby. Prosím pomožte:

DTD: http://www.lib.virginia.edu/digital/resndev/mei/mei17b/mei17bFull.dtd

stylová šablona XSL: http://www.lib.virginia.edu/digital/resndev/mei/mei17b/2mei2.xsl

skladba: http://www.lib.virginia.edu/digital/resndev/mei/mei17b/MozartTrio.mei

obecný odkaz: http://www.lib.virginia.edu/digital/resndev/mei/
mach 21.2.2008 15:00  883
Bredy: Diky, musim rict, ze clanek mas napsany hezky.
gumysh 16.2.2008 22:16  882
BredyTo vis, ze nic extra noveho to byt nemuze - proste zase jde jen o fintu s mapovanim, kdy je nejaky fyzicky region odkazovan strankami vice procesu. Z toho take plynou omezeni, ale holt tak to je; treba __declspec(thread) promenne jsou podobnym pripadem.
Jinak rozhodne si nemyslim, ze by se to prepisovalo do DLL fyzicky, spis to zustane jen ve strance, ktera bude zalohovana systemovym strankovacim souborem stejne jako anonymni souborove mapovani. Ono totiz nemusi byt zapisove pravo k prislusne knihovne (resp. nevim, proc by melo byt).

S tou efektivitou sdilene pameti jsem to spatne napsal; myslel jsem to tak, pro jednoduche veci, kdy se pouzije, tak ma nejakou dalsi rezii navic na pootevirani/zavirani prislusnych handles (potencialne ve vsech procesech) a je potreba nejak v ni fungovat. Ten sdileny segment ale take urcite nebude zadarmo; treba hadam, ze zde bude potreba relokaci.
bredy 16.2.2008 12:49  881
GumyshPěkný, to jsem nevěděl. Ale v zásadě to je stále stejný princip. DLL jsou též načítány přes CreateFileMappings (přesnějí přes NtCreateSection). Tady jde snad jedině o to, že část sekce, kterou se sdílí image toho DLL se označí příznakem pro zápis a pak je opravdu sdílená. Ty podmínky, které tam ale jsou vyjmenované jsou někdy (zvlášť třeba v C++) dost omezující. Ale na drobnosti by to mělo stačit, to určitě. Jen by mě zajímalo, jestli data zapsaná do této sekce se přepisují i do toho DLL fyzicky, nebo jak to vlastně mají vyřešený.

O té efektivitě mapovaných souborů mi něco napiš. Nenapadlo by mě, že mohou být neefektivní. Vytvořit sdílenou paměť je v DLL primitivní, stačí v DLL_PROCESS_ATTACH zavolat CreateFileMapping a MapViewOfFile a dostanu se na stejnou situaci jako tady. A neřekl bych, že by to bylo nějak pomalější...
gumysh 16.2.2008 09:46  879
BredyJa bych dodal, ze sdileny obsah neni obcas nutne drzet ve sdilene pameti (mysleno ve sdilene pomoci CreateFileMapping()), aneb sdilena pamet muze byt kanon na vrabce pro jednoduche aplikace (a navic muze byt zbytecne neefektivni). I pro DLL lze nechat vytvorit sdileny segment, ktery pak je namapovan ve vsech instancich DLL na stejny (fyzicky) pametovy region. Tolik aspon MSDN a MS KB.
bredy 15.2.2008 20:11  878
machAno správně. DLL není nic jiného než knihovna (jako LIB), ale linkuje se dynamicky až za běhu. Jiný rozdíl v tom není. Takže DLL samo osobě má tolik instacní, kolik běží aplikací, které ho mají načtené v paměti. I když se dozvíš, že DLL se sdílí, tak to platí jen o kódu DLL (image), ale stav toho DLL má každý proces vlastní. Každý DLL má vlastní heapu, a vlastní sadu statických proměnných a samozřejmě nevidí proměnné v jiném procesu.

Sdílený obsah musíš držet ve sdílené paměti, kterou vytvoříš v DllMain PROCESS_ATTACH. Windowsy v tomhle směru mají docela pěknou podporu mapovaných souborů, kdy nemusíš řešit, kdo paměť vytvořil a kdo ji nakonec zničí, jako třeba v Linuxu (všechno vyřeší Windows za tebe).

Znova Tě mohu odkázat na můj článek o komunikaci mezi procesy :-D
operator304 15.2.2008 15:46  877
mam problem s jaxb

nevite nekdo, jestli se da jaxb predhodit libovolna NEANOTOVANA trida?

a dalsi, nevite nekdo, jakym zpusobem resi jaxb verzovani? Neco jako UUID u serializace.
mach 15.2.2008 14:28  876
promenne uvnitr DLL knihovnyZkousel jsem si hrat s temi hooky a programovanim DLL knihoven. Pro zacatek bych si chtel udelat program, co posloucha, jestli uzivatel kliknul a za kazdy klik udela v nejakem souboru tecku.

Udelal jsem tedy DLL knihovnu, ktera obsahuje funkci:

LRESULT __declspec(dllexport)__stdcall CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)

kterou system vola pri nejake dalosti mysi. Taky mam na zacatku souboru nadefinovanou globalni promennou:

char fn[260];

kde bych si chtel uchovavat jmeno souboru, do ktereho se zapis provadi. Jenze kdyz tuhle promennou uvnitr MouseProc zmenim, pri zpracovani nasledujici udalosti uz je semtam obsah promenny jiny (jako kdyby byla najednou neinicializovana). Konkretne se to stava, kdyz uzivatel prepne proces (okno). Vypada to, jako kdyby ta dll knihovna mela pro kazdy proces oddelenou sadu (kopii) svych promennych, ktere jsou navzajem nezavisle. Je to vubec mozny? Zkousel jsem tu promennou deklarovat jako statickou, hodit ji dovnitr #pragma data_seg(".SHARDAT") a tak dal, ale porad se to chova stejne. Pouzival VS C++ 2005.
mach 18.1.2008 10:28  875
Diky vsem, zejmena Bredymu, prozkoumam to :-)
bredy 17.1.2008 14:26  874
Hooky lze instalovat selektivně
Možná ještě efektivnější řešení je zjistit si, ve kterým vláknu to okno žije (GetWindowThreadProcessId) a pak zavolat funkci SetWindowHookEx s číslem toho vlákna. Hook se pak nainstaluje jen na to vlákno.

[ 857 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  

(c) 2001-2011 Lopuch.cz   
Kontakt