I marcatori oggetto ("object handles") sono numeri interi a 32 bit che si presume all'interno del sistema siano univoci. La parola pi— significativa dell'intero rappresenta la classe di immagazzinamento dell'oggetto, mentre la parola meno significativa garantisce l'identificazione univoca all'interno di quella classe di immagazzinamento. Per capire da dove arrivano tutti questi marcatori file Š necessario spendere qualche parola sul meccanismo interno di funzionamento della WPS.

La Workplace Shell infatti dovrebbe in teoria creare marcatori per gli oggetti file system (file dati e cartelle) solo quando questo Š realmente necessario, quando cioŠ da qualche parte vi si fa riferimento.

Tali marcatori file-system possono anche causare problemi. Pi— ve ne sono e pi— la WPS in generale diventa lenta. Ma pi— importante ancora Š il fatto che il numero complessivo dei marcatori file-system non pu• crescere illimitatamente: se i marcatori diventano troppi la WPS pu• diventare instabile.

I marcatori file vengono creati, tra l'altro, nelle occasioni seguenti

  1. Per gli oggetti programma e le copie collegate, il che Š desiderabile, dato che permette di mantenere legati oggetti programma e copie collegate all'oggetto di destinazione anche quando tale oggetto viene spostato dalla sua posizione originale.

    Quando, per esempio, si inserisce nel blocco appunti impostazioni di un oggetto programma il percorso del file eseguibile, l'oggetto programma fa riferimento all'eseguibile attraverso un marcatore, che viene generato automaticamente se ancora non ne era stato assegnato uno. Lo stesso vale per le copie collegate.

  2. Per altre componenti della WPS (o di &xwp;), allo scopo per immagazzinare riferimenti agli oggetti; per esempio, &xwp; utilizza marcatori oggetti per creare gli oggetti bottone sullo &xcenter;.

  3. Ogni volta che ad un oggetto Š assegnata un'IDentit… oggetto (la stringa tra parentesi ad angolo, per es. <WP_DESKTOP>); le IDentit… oggetto sono conservate nella sezione PM_Workplace:Location del file OS2.INI assieme ai marcatori oggetto, e possono evidentemente essere risolte solo se il marcatore Š valido.

    Il problema principale di questa implementazione Š che, se la tabella dei marcatori file si corrompe, la WPS non Š pi— in grado di riconoscere la Scrivania, solitamente individuata grazie alla IDentit… oggetto <WP_DESKTOP> all'avvio del sistema. Il messaggio di errore "Impossibile trovare la Scrivania" Š nel 95% dei casi dovuto alla tabella marcatori file corrotta.

  4. Dalle applicazioni che utilizzano le API Win* per creare oggetti della Scrivania o per modificarli. E' un comportamento generalmente tollerabile, dato che di norma riguarda un numero limitato di file. Alcune di queste API, ad es. WinMoveObject, richiedono sfortunatamente proprio un marcatore oggetto come input.

  5. Per ognuna delle cartelle aperte nel sistema. Anche questo Š tollerabile, dato che la WPS usa il marcatore per memorizzare, nel file OS2.INI, la posizione di apertura della cartella sullo schermo e poterla ricordare anche se la cartella viene spostata.

  6. Automaticamente per ogni cartella genitore nel percorso di un file, quando per questo file viene creato l'dentificatore. E' necessario per il meccanismo di implementazione del database marcatori, che per gli oggetti file system conserva solo il nome corto assieme ad un riferimento alla cartella genitore. Si tratta di un sistema estremamente efficente: se infatti si sposta una cartella con molti oggetti all'interno, nel database sar… necessario aggiornare una sola voce; gli oggetti all'interno della cartella infatti continuano a conservare solo il nome della cartella genitore, che non cambia.

  7. Per ogni file dati aperto attraverso l'associazione con un oggetto programma. La WPS infatti imposta la variabile ambiente WP_OBJHANDLE sul marcatore del file dati aperto. Questo Š utile per certi programmi, ma ha l'effetto indesiderato di generare un marcatore ogni volta che si fa doppio clic su di un oggetto, anche quando l'applicazione non ne fa alcun uso.

    &xwp; permette di eliminare questo comportamento facendo uso delle associazioni file estese.

  8. Disgraziatamente la WPS crea un marcatore per ogni oggetto nuovo trovato durante l'aggiornamento automatico delle cartelle. Il che significa che, se si apre una cartella e si fa qualcosa al suo interno attraverso la linea di comando (o con un'applicazione), verr… creato un nuovo marcatore per ogni file modificato nella cartella.

    Un semplice test consiste nello scompattare un file ZIP all'interno di una cartella aperta. Questa operazione crea una serie di marcatori file system che non saranno probabilmente mai pi— usati. Sono numerosissimi i marcatori relativi a oggetti file system creati a causa di questo difetto.

    Inoltre, lo ripetiamo, dato che tali marcatori non vengono mai cancellati, sono destinati a restare per sempre nel sistema pur essendo del tutto inutili.

    La funzione sostitutiva di aggiornamento cartelle di &xwp; elimina il problema.