Sådan Får Du En Deskriptor

Indholdsfortegnelse:

Sådan Får Du En Deskriptor
Sådan Får Du En Deskriptor

Video: Sådan Får Du En Deskriptor

Video: Sådan Får Du En Deskriptor
Video: Sådan Skifter Du Nemt Batteriet I En Macbook Pro (REUPLOAD) 2024, November
Anonim

Programmeringsgrænsefladen til applikationer til Windows-operativsystemer er repræsenteret af et sæt funktioner. Når de kaldes, kan forskellige objekter (filer, processer, tråde, synkroniseringsobjekter osv.) Oprettes. For at give en tilstrækkelig abstrakt og samlet adgang til disse objekter udføres deres identifikation ved hjælp af deskriptorer - "upersonlige" numeriske værdier.

Sådan får du en deskriptor
Sådan får du en deskriptor

Nødvendig

  • - en oversætter fra et programmeringssprog, der tillader brug af Windows API
  • - muligvis Windows Platform SDK.

Instruktioner

Trin 1

Få vindueshåndtag. Der er mange måder at gøre dette på. Den nøjagtige metode afhænger af slutmålet.

Brug CreateWindow eller CreateWindowEx API'er til at oprette et vindue. De returnerer et greb om succes og NULL for fiasko.

Søg efter topniveauer og underordnede vinduer efter forskellige parametre ved hjælp af henholdsvis FindWindow og FindWindowEx-funktionerne. Ved vellykket søgning opnås vindueshåndtaget.

Tæl vinduer med EnumWindows, EnumChildWindows, EnumThreadWindows-funktioner. Håndtagene til de fundne vinduer overføres som en parameter til tilbagekaldsfunktionen.

Find håndtaget til vinduet placeret på en bestemt position på skærmen. Ring til en af funktionerne: WindowFromPoint, ChildWindowFromPoint eller ChildWindowFromPointEx.

Trin 2

Få proceshåndtag. Opret en ny proces ved at kalde funktionerne CreateProcess, CreateProcessAsUser, CreateProcessWithTokenW eller CreateProcessWithLogonW API. De returnerer alle et håndtag til den nye proces i hProcess-feltet i PROCESS_INFORMATION-strukturen, hvis markør skal sendes til dem som den sidste parameter.

Find håndtaget til processen ved hjælp af dens kendte identifikator. Brug OpenProcess-opkaldet. ID'erne for alle kørende processer kan f.eks. Fås ved hjælp af funktionerne CreateToolhelp32Snapshot, Process32First og Process32Next i værktøjshjælpebiblioteket.

Hent pseudohåndtaget til den aktuelle proces ved hjælp af GetCurrentProcess-funktionen.

Trin 3

Få beskrivelser af tråde. Funktionerne CreateThread og CreateRemoteThread opretter tråde i henholdsvis deres egen og andres proces og returnerer deres håndtag. Du kan åbne en eksisterende tråd ved hjælp af dens identifikator og få det tilsvarende håndtag ved hjælp af OpenThread-funktionen. Pseudohåndtaget for den aktuelle strøm returneres, når GetCurrentThread kaldes.

Trin 4

Beskrivelser af filer, kataloger, fysiske diske, diskvolumener, konsoller, kommunikationsressourcer (I / O-porte), mail-slots og navngivne rør kan fås ved at kalde en enkelt funktion, CreateFile.

Trin 5

File-to-memory-kortlægningsobjektbeskrivere returneres ved opkald til CreateFileMapping og OpenFileMapping.

Trin 6

Funktionerne CreateMutex, CreateSemaphore og CreateEvent opretter, og funktionerne OpenMutex, OpenSemaphore og OpenEvent åbner eksisterende synkroniseringsobjekter (mutexes, semafhores og begivenheder). De returnerer alle beskrivelser.

Trin 7

Alle GDI-objekter (såsom enhedskontekster, skrifttyper, børster, blyanter, hardwareafhængige og uafhængige bitmaps, DIB-sektioner osv.) Manipuleres gennem deres deskriptorer. Funktionerne til oprettelse af GDI-objekter er mange og bør konsulteres i MSDN-sektionen for information om dem.

Trin 8

En deskriptor opnået i en proces kan som regel ikke bruges i en anden. I nogle tilfælde er det dog muligt at få en duplikatbeskrivelse svarende til det primære objekt. Ring til DuplicateHandle API for at duplikere håndtaget. Dette kan f.eks. Bruges til at dele unavngivne synkroniseringsobjekter eller kanaler mellem flere processer.

Anbefalede: