Objekthandtag „r 32-bitars heltal vilka antas vara unika p† systemet. Det h”ga-ordet (”vre 16 bitar) av heltalet betecknar lagringsklassen hos objektet (abstrakt eller filsystem), medan det l†ga-ordet (undre 16 bitar) „r en unik identifierare inom lagringsklassen. F”r att f”rst† var alla dessa filsystemshandtag kommer ifr†n, m†ste man k„nna till mer om WPS interna arbetss„tt.

I teorin, skall WPS endast skapa ett handtag f”r ett filsystemsobjekt om det verkligen „r n”dv„ndigt, t.ex. om objektet verkligen refererades n†gonstans.

Emellertid, filsystemshandtag kan ocks† orsaka problem. Ju fler filsystemshandtag som finns, ju sl”are blir WPS i allm„nhet. Viktigast, det totala antalet filsystemshandtag „r begr„nsat. Om det finns f”r m†nga filsystemshandtag, kan WPS bli ostabilt.

Bland annat, skapas filhandtag i f”ljande situationer:

  1. Fr†n programobjekt och skuggor. Detta „r ”nskv„rt eftersom det till†ter programobjekt och skuggor att fortfarande kunna peka p† korrekt m†lobjekt n„r m†lobjektet inte l„ngre befinner sig p† sin originalposition.

    Till exempel, om du anger en s”kv„g till en exekverbar fil i ett programobjekts notbok med egenskaper, vill programobjektet ha ett handtag, s† det b”r f† ett n„r inga objekt „nnu existerar. Samma sak g„ller n„r du skapar en skugga f”r ett objekt.

  2. Fr†n andra delar av WPS (och &xwp;) f”r att lagra objektreferenser. Till exempel, anv„nder &xwp; objekthandtag f”r att komma ih†g dina objektknappar i &xcenter;.

  3. N„rhelst ett objekt har givits ett objekt ID (det som finns inom vinklar, t.ex. <WP_DESKTOP>). Objekt ID's „r lagrade i PM_Workplace:Location sektionen i OS2.INI tillsammans med objekthandtagen och kan endast sp†ras upp om handtaget „r giltigt.

    Det stora problemet med h„r implementationen „r att om filhandtagstabellen „r bruten, kommer WPS inte att hitta Skrivbordet n†gon mer g†ng d„rf”r att det anv„nder <WP_DESKTOP> objekt ID f”r att hitta det under startup. Om du f†r dialogen "Kan inte hitta Skrivbordet", „r i 95% av alla fall filhandtagstabellen bruten.

  4. Fr†n applikationsprogram vilka anv„nder Win* API'er f”r att skapa Skrivbordsobjekt eller arbeta med dem. Detta „r normalt tolerabelt om det endast p†verkar n†gra f† filer. Olyckligtvis, kr„ver vissa av dessa API'er (s†dana som WinMoveObject) objekthandtag som inmatning.

  5. F”r varje mapp som n†gonsin ”ppnats. Detta „r ocks† tolerabelt d„rf”r att WPS anv„nder en mapps handtag f”r att lagra dess position i OS2.INI s† att mappens position inte f”rloras n„r mappen flyttas.

  6. Automatisk f”r varje ”verordnad mapp i fils s”kv„g om ett nytt handtag „r skapat f”r filen. Detta beror p† handtagsdatabasens implementation vilken endast lagrar det korta namnet hos varje filsystemsobjekt och lagrar en referens till dess f”r„lder med det korta namnet. Detta „r v„ldigt effektivt d„rf”r att om en mapp med m†nga subobjekt flyttas, beh”ver endast en enda uppgift i databasen uppdateras. Subobjekten har endast ett f”r„ldrahandtag lagrat, vilket fortfarande fungerar.

  7. F”r varje datafil som ”ppnas genom en programobjektsassociation. Detta beror p† att WPS s„tter WP_OBJHANDLE milj”variabeln till handtaget hos datafilen n„r det ”ppnades. Vissa program bygger p† det, men det har ocks† en olycklig effekt att ett handtag skapas varje g†ng du dubbelklickar p† en datafil „ven om applikationen inte beh”ver det handtaget.

    &xwp; till†ter dig att avaktivera detta beteende med dess ut”kade filassociationer.

  8. Olyckligtvis, skapar WPS ocks† handtag f”r varje objekt som f”rnyas under mapps auto-f”rnya. Det betyder, att om en mapp „r ”ppen och du g”r n†gonting med den fr†n kommandoraden (eller n†gon annan applikation g”r n†gonting med filerna i den mappen), kommer f”r varje fil i mappen, ett nytt filhandtag att skapas.

    Ett enkelt testfall f”r detta „r att zippa upp en ZIP fil till en ”ppen mapp. Detta kommer att skapa massor av filhandtag som troligtvis aldrig kommer att anv„ndas igen. Ett ganska stort antal filsystemshandtag kommer att skapas som ett resultat av det h„r beteendet.

    Och igen, eftersom objekthandtag aldrig tas bort, kommer dessa on”diga handtag att stanna p† systemet i evighet.

    Detta problem har †tg„rdats med &xwp;'s utbyte av mappars f”rnyelse.