Com Obtenir Un Descriptor

Taula de continguts:

Com Obtenir Un Descriptor
Com Obtenir Un Descriptor

Vídeo: Com Obtenir Un Descriptor

Vídeo: Com Obtenir Un Descriptor
Vídeo: Дескрипторы Python 2024, Maig
Anonim

La interfície de programació d'aplicacions dels sistemes operatius Windows està representada per un conjunt de funcions. Quan es criden, es poden crear diversos objectes (fitxers, processos, fils, objectes de sincronització, etc.). Per proporcionar un accés prou abstracte i unificat a aquests objectes, la seva identificació es realitza mitjançant descriptors (valors numèrics "impersonals").

Com obtenir un descriptor
Com obtenir un descriptor

Necessari

  • - un traductor d’un llenguatge de programació que permeti l’ús de l’API de Windows;
  • - possiblement Windows Platform SDK.

Instruccions

Pas 1

Obteniu nanses de finestra. Hi ha moltes maneres de fer-ho. El mètode exacte depèn de l'objectiu final.

Utilitzeu les API CreateWindow o CreateWindowEx per crear una finestra. Tornen un control sobre l'èxit i NULL sobre el fracàs.

Cerqueu finestres de nivell superior i finestres secundàries mitjançant diversos paràmetres mitjançant les funcions FindWindow i FindWindowEx, respectivament. Si es fa una cerca amb èxit, s'obtindrà el controlador de finestra.

Enumereu les finestres amb les funcions EnumWindows, EnumChildWindows, EnumThreadWindows. Els controladors de les finestres trobades es passaran com a paràmetre a la funció de devolució de trucada.

Cerqueu el mànec de la finestra que es troba en una posició específica a la pantalla. Truqueu a una de les funcions: WindowFromPoint, ChildWindowFromPoint o ChildWindowFromPointEx.

Pas 2

Obteniu controladors de processos. Creeu un procés nou trucant a les funcions API CreateProcess, CreateProcessAsUser, CreateProcessWithTokenW o CreateProcessWithLogonW. Tots retornen un controlador al nou procés al camp hProcess de l'estructura PROCESS_INFORMATION, el punter al qual se'ls hauria de passar com a darrer paràmetre.

Cerqueu el controlador del procés pel seu identificador conegut. Utilitzeu la trucada OpenProcess. Els identificadors de tots els processos en execució es poden obtenir, per exemple, mitjançant les funcions CreateToolhelp32Snapshot, Process32First i Process32Next de la biblioteca Help Tool.

Recupereu el pseudo controlador del procés actual mitjançant la funció GetCurrentProcess.

Pas 3

Obteniu descriptors de fils. Les funcions CreateThread i CreateRemoteThread creen fils en el seu propi procés i en una altra persona, respectivament, retornant els seus identificadors. Podeu obrir un fil existent mitjançant el seu identificador i obtenir el controlador corresponent mitjançant la funció OpenThread. El pseudo-controlador del flux actual es torna quan es crida GetCurrentThread.

Pas 4

Es poden obtenir descriptors per a fitxers, directoris, discs físics, volums de disc, consoles, recursos de comunicació (ports d'E / S), ranures de correu i canonades amb nom trucant a una única funció, CreateFile.

Pas 5

Els descriptors d’objectes de mapatge de fitxers a memòria es retornen mitjançant trucades a CreateFileMapping i OpenFileMapping.

Pas 6

Les funcions CreateMutex, CreateSemaphore i CreateEvent es creen i les funcions OpenMutex, OpenSemaphore i OpenEvent obren objectes de sincronització existents (mutus, semàfors i esdeveniments). Tots retornen descriptors.

Pas 7

Tots els objectes GDI (com ara contextos de dispositiu, tipus de lletra, pinzells, llapis, mapes de bits independents i dependents del maquinari, seccions DIB, etc.) es manipulen a través dels seus descriptors. Les funcions per crear objectes GDI són nombroses i cal consultar-les a la secció MSDN per obtenir-ne informació.

Pas 8

Un descriptor obtingut en un procés, per regla general, no es pot utilitzar en un altre. No obstant això, en alguns casos és possible obtenir un descriptor duplicat corresponent a l'objecte principal. Truqueu a l'API DuplicateHandle per duplicar el controlador. Això es pot utilitzar, per exemple, per compartir objectes o canals de sincronització sense nom entre diversos processos.

Recomanat: