Ga naar inhoud

Wat is een Handle?


Aanbevolen berichten

Wat is een Handle? Deze vraag stel ik niet zozeer omdat ik wil gaan programmeren, maar omdat ik problemen heb met windows 98. explorer.exe "vreet" handles waardoor de PC vastloopt. Zie voor meer details mijn vraag in de "Windows OS", "Memory Leak in Windows 98 SE (door verkenner)". Bedankt voor de moeite, Willem
Link naar reactie
Een handle is een handvat, iets waarmee je een object kan vasthouden. Ook wordt een object door zo'n handle geïdentificeerd omdat ieder handle uniek is. De meeste objecten hebben een handle en via zo'n handle kun je ook iets doen met die objecten. Zie het als een enorm grote parkeerplaats met allemaal auto's. Als je een specifieke auto iets wil laten doen of er iets mee wilt doen, dan zou je alle auto's af moeten gaan om te kijken of het model goed is, het type goed is, de kleur goed is, etc., totdat je eindelijk de juiste auto hebt. Als je nu op alle auto's een vlaggetje plaatst met uniek kleurtje, dan hoef je alleen de unieke kleur op te zoeken en je hebt de juiste auto te pakken. Misschien erg simplistisch, maar het versnelt wel de werking van Windows. Een flink aantal API functies (functies die in Windows zelf zitten en waar de programmeur gebruik van kan maken) maken gebruik van die handles, voornamelijk vanwege identificatie van het object.
Link naar reactie
  • 3 weken later...
zonder handles is Windows onhandelbaar... :lol: Vergelijk een handle met het handvat van een keukenmes. Zonder handvat is zo'n mes lastig vast te houden en heb je een grotere kans dat je je in je vingers snijdt. (Tenzij het een bot mes is natuurlijk.) Een handle kun je eigenlijk vergelijken met een pointer binnen Windows. Het is overigens geen rechtstreekse pointer naar een geheugenadres maar meer een index in een tabel van handles. Deze tabel wordt door Windows intern beheerd, aangezien fysieke geheugenadressen binnen Windows nog wel eens kunnen veranderen. (Dit omdat Windows continu het geheugen optimaliseert of naar de swapfile schopt.) Door handles te gebruiken heb je een langere weg te gaan om het fysieke adres van een object te bepalen maar als voordeel kun je dus flexibeler met geheugen omgaan. Vandaar dat MS voor deze oplossing heeft gekozen. (En niet alleen MS, overigens.) Het verschil in snelheid is overigens vrijwel onmerkbaar. Nu denken velen dat wanneer ze met pointers onder Windows werken dat deze pointers wel naar een fysiek adres wijzen maar dit is maar gedeeltelijk waar. Je zult namelijk eerst een blok geheugen moeten alloceren en dan krijg je dus een handle naar dit blok terug. Dit blok kun je vergroten of verkleinen indien nodig. Je pointers zijn dan ook gewoon pointers binnen dit blok geheugen. Dus als je via een pointer een geheugenadres benadert dan wordt via de geheugen-handle met daarnaast de pointer (offset binnen geheugenblok) het exacte adres bepaald van hetgeen je wilt benaderen. Wat is het probleem met handles? Wel, Windows heeft dus een tabel waarin deze handles worden opgenomen en deze lijst kan wel eens vol raken als er erg veel handles gebruikt worden. Gelukkig heeft iedere applicatie zijn eigen handles-tabel en kan deze tabel in de nieuwere Windows versies vrij groot zijn. Maar ja, als er geheugen wordt verplaatst dan moet Windows ook extra veel handles aanpassen, wat het geheel dus weer verder vertraagd. Vooral als je weinig geheugen hebt of lekkende applicaties kan dit erg vervelend zijn...
Link naar reactie
[quote:236c9e2ccf="Willem-2"]Wat is een Handle? Deze vraag stel ik niet zozeer omdat ik wil gaan programmeren, maar omdat ik problemen heb met windows 98. explorer.exe "vreet" handles waardoor de PC vastloopt. Zie voor meer details mijn vraag in de "Windows OS", "Memory Leak in Windows 98 SE (door verkenner)". Bedankt voor de moeite, [/quote:236c9e2ccf] Nog iets simpeler. Vergelijk een handle met een huisnummer. Als je het huisnummer weet, dan weet je waar je moet zijn en wat voor type object het is. Deze objecten worden door windows bijgehouden.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...