OBJETOS E MANIPULADORES
Silício ReversooicìliS ©
Assembly Avançado
TEXTOS ACESSÓRIOS
Notice: Undefined variable: subtitulo in /home/numaboa.com.br/public_html/informatica/oiciliS/assembler/head.php on line 10

(ver 1.2 de 02.08.03)

Um objeto é uma estrutura interna que representa um recurso do sistema, como um arquivo, uma linha de processo (thread) ou uma imagem gráfica. Um aplicativo não pode acessar diretamente a estrutura interna de um objeto ou do recurso do sistema que este objeto representa - precisa obter um manipulador (handle) do objeto para poder examiná-lo e/ou modificá-lo.

O Windows usa objetos e manipuladores para vigiar o acesso aos recursos do sistema. Isto impede que programadores tenham acesso direto às estruturas internas de baixo nível. Por outro lado, cada objeto tem sua própria lista de controle de acessos (ACL - access-control list) que especifica os tipos de ação permitidos para cada objeto e o sistema operacional examina a ACL de um objeto toda vez que um aplicativo tentar criar um manipulador para ele. Para a maioria dos objetos, a API Win32 oferece funções para criá-los, criar seus manipuladores, fechar os manipuladores e para destruí-los.

Manipuladores e objetos consomem memória. Para preservar a performance do sistema, um aplicativo deve fechar manipuladores e destruir objetos que não sejam mais necessários.

O Windows oferece três categorias de objetos: de ususários (user), de interface de dispositivos gráficos (GDI) e de kernel. O sistema utiliza objetos user para apoiar o gerenciamento de janelas, objetos GDI para apoiar gráficos e objetos kernel para apoiar o gerenciamento de memória, a execução do processo e a intercomunicação de processos.

Alguns objetos, como os user e GDI, só podem ter um manipulador. O sistema fornece um manipulador quando o aplicativo criar o objeto e invalida o manipulador quando o aplicativo destruir o objeto. Outros objetos, como alguns do kernel, podem possuir vários manipuladores. O sistema operacional remove o objeto da memória assim que o último manipulador for fechado.

O número de manipuladores abertos depende unicamente do total de memória disponível. Entretanto, um único processo não pode ter mais do que 16.384 manipuladores de objetos GDI abertos simultaneamente. O limite de manipuladores de kernel é de 230 por processo. Para manipuladores user não há limite por processo, mas há o limite de 65.536 do sistema.

Objetos USER e GDI

Os objetos GDI e user podem ter apenas um manipulador. O processo não pode herdar ou duplicar estes manipuladores. Os manipuladores user são públicos para todos os processos, ou seja, qualquer processo pode usar o manipulador de um objeto user. Os manipuladores de objetos GDI são privativos de um processo, ou seja, apenas o processo que criou o objeto GDI pode usar seu manipulador.

Na figura abaixo, um aplicativo cria um objeto janela(1). A função CreateWindow cria um objeto janela (2) e retorna o manipulador deste objeto (3). Este manipulador do objeto janela pode ser utilizado pelo aplicativo para mostrar ou alterar a janela. O manipulador é válido enquanto o objeto correspondente não for destruído.

Na figura abaixo, o aplicativo destrói o objeto janela(1). A função DestroyWindow retira o objeto janela da memória (2), o que invalida o manipulador (3).

A tabela abaixo contém uma lista de objetos user e as funções correspondentes para criá-los e destruí-los. As funções de criação criam o objeto e seu manipulador ou então retornam simplesmente um manipulador existente. As funções de destruição removem o objeto da memória, o que invalida o manipulador correspondente, com exceção dos objetos window station e desktop que são criados e mantidos pelo sistema (um aplicativo não consegue destruir estes dois objetos).

Funções para objetos User
OBJETO USERFunção para criarFunção para destruir
Tabela de AceleradoresCreateAcceleratorTableDestroyAcceleratorTable
CursorCreateCursor, LoadCursor, GetCursor, SetCursorDestroyCursor
Conversação DDEDdeConnect, DdeConnectList, DdeQueryNextServer, DdeReconnectDdeDisconnect, DdeDisconnectList
DesktopGetThreadDesktop
HookSetWindowsHook, SetWindowsHookExUnhookWindowsHook, UnhookWindowsHookEx
MenuCreateMenu, CreatePopupMenu, GetMenu, GetSubMenu, GetSystemMenu, LoadMenu, LoadMenuIndirectDestroyMenu
JanelaCreateWindow, CreateWindowEx, CreateDialogParam, CreateDialogIndirectParam, CreateMDIWindow, FindWindow, GetWindow, GetClipboardOwner, GetDesktopWindow, GetDlgItem, GetForegroundWindow, GetLastActivePopup, GetOpenClipboardWindow, GetTopWindow, WindowFromDC, WindowFromPoint e outrasDestroyWindow
Posição da JanelaBeginDeferWindowPosEndDeferWindowPos
Window stationGetProcessWindowStation


Funções para objetos GDI
OBJETO GDIFunção para criarFunção para destruir
BitmapCreateBitmap, CreateBitmapIndirect, CreateCompatibleBitmap, CreateDlBitmap, CreateDIBSection, CreateDiscardableBitmapDeleteObject
Brush (pincel)CreateBrushIndirect, CreateDIBPatternBrush, CreateDIBPatternBrushPt, CreateHatchBrush, CreatePatternBrush, CreateSolidBrushDeleteObject
FonteCreateFont, CreateFontIndirectDeleteObject
PaletaCreatePaletteDeleteObject
Pen (pena)CreatePen, CreatePenIndirectDeleteObject
Pena ExtendidaExtCreatePenDeleteObject
RegiãoCombineRgn, CreateEllipticRgn, CreateEllipticRgnIndirect, CreatePolygonRgn, CreatePolyPoligonRgn, CreateRectRgn, CreateRectRgnIndirect, CreateRoundRectRgn, ExtCreateRegion, PathToRegionDeleteObject
Contexto de Dispositivo (DC)CreateDC, GetDCDeleteDC, ReleaseDC
DC de MemóriaCreateCompatibleDCDeleteDC
MetafileCloseMetaFile, CopyMetaFile, GetMetaFile, SetMetaFileBitsExDeleteMetaFile
DC de MetafileCreateMetafileCloseMetaFile
Enhanced metafileCloseEnhMetaFile, CopyEnhMetaFile, GetEnhMetaFile, SetEnhMetaFileBitsDeleteEnhMetaFile
DC de enhanced metafileCreateEnhMetaFileCloseEnhMetaFile




TEM MAIS

Os objetos Kernel são um pouco mais complexos e as explicações correspondentes um tanto longas. Leia sobre os objetos kernel no segundo módulo deste texto de apoio.



Localizador

| AAAA | Página Inicial | Mapa do Site | Novidades | Busca | Indique esta página | Mestre da Teia | Voltar |
| Localizador || @ Info NumaBoa > oicìliS > Assembly > Textos > Objetos e Manipuladores
Créditos: vovó Vicki

webdesign sobMedida by vickiSoft - /informatica/oiciliS/assembler/textos/handles.php (17.02.02) versão 1.2 de 02.08.03
Licença Creative Commons 1998-2006 Aldeia NumaBoa
Exceto onde especificamente declarado, todo material deste site é disponibilizado de acordo com a Licença Creative Commons.