Condividi tramite


Interfaccia dell'oggetto

Windows fornisce funzioni che eseguono le attività seguenti:

  • Creare un oggetto
  • Ottenere un handle di oggetto
  • Ottenere informazioni sull'oggetto
  • Impostare le informazioni sull'oggetto
  • Chiudere l'handle dell'oggetto
  • Eliminare definitivamente l'oggetto

Alcune di queste attività non sono necessarie per ogni oggetto. Alcune di queste attività vengono combinate per determinati oggetti. Ad esempio, un'applicazione può creare un oggetto evento. Altre applicazioni possono aprire l'evento per ottenere un handle univoco per questo oggetto evento. Al termine dell'utilizzo dell'evento, ogni applicazione chiude il relativo handle all'oggetto . Quando non sono presenti handle aperti rimanenti per l'oggetto evento, il sistema elimina definitivamente l'oggetto evento. Al contrario, un'applicazione può ottenere un handle per un oggetto finestra esistente. Quando l'oggetto finestra non è più necessario, l'applicazione deve eliminare definitivamente l'oggetto, che invalida l'handle della finestra.

In alcuni casi, un oggetto rimane in memoria dopo che tutti gli handle di oggetto sono stati chiusi. Ad esempio, un thread potrebbe creare un oggetto evento e attendere l'handle dell'evento. Mentre il thread è in attesa, un altro thread potrebbe chiudere lo stesso handle dell'oggetto evento. L'oggetto evento rimane in memoria, senza handle di oggetti evento, fino a quando l'oggetto evento non viene impostato sullo stato segnalato e l'operazione di attesa viene completata. Al momento, il sistema rimuove l'oggetto dalla memoria.

Handle e oggetti utilizzano memoria. Pertanto, per mantenere le prestazioni del sistema, è necessario chiudere handle ed eliminare oggetti non appena non sono più necessari. Se non si esegue questa operazione, l'applicazione può compromettere le prestazioni del sistema, a causa di un uso eccessivo del file di paging.

Quando un processo termina, il sistema chiude automaticamente gli handle ed elimina gli oggetti creati dal processo. Tuttavia, quando un thread termina, il sistema in genere non chiude handle o elimina oggetti. Le uniche eccezioni sono gli oggetti finestra, hook, posizione della finestra e DDE (Dynamic Data Exchange); questi oggetti vengono eliminati definitivamente quando il thread di creazione termina.