Hur Man Får En Deskriptor

Innehållsförteckning:

Hur Man Får En Deskriptor
Hur Man Får En Deskriptor

Video: Hur Man Får En Deskriptor

Video: Hur Man Får En Deskriptor
Video: Hantering av ögonläkemedel 2024, Maj
Anonim

Programmeringsgränssnittet för Windows-operativsystem representeras av en uppsättning funktioner. När de anropas kan olika objekt (filer, processer, trådar, synkroniseringsobjekt etc.) skapas. För att ge en tillräckligt abstrakt och enhetlig tillgång till dessa objekt utförs deras identifiering med hjälp av deskriptorer - "opersonliga" numeriska värden.

Hur man får en deskriptor
Hur man får en deskriptor

Nödvändig

  • - en översättare från ett programmeringsspråk som tillåter användning av Windows API;
  • - möjligen Windows Platform SDK.

Instruktioner

Steg 1

Skaffa fönsterhandtag. Det finns många sätt att göra detta. Den exakta metoden beror på slutmålet.

Använd CreateWindow eller CreateWindowEx API: er för att skapa ett fönster. De returnerar ett handtag för framgång och NULL om misslyckande.

Sök efter fönster på högsta nivå och underfönster med olika parametrar med FindWindow respektive FindWindowEx-funktionerna. Vid lyckad sökning kommer fönsterhandtaget att erhållas.

Räkna upp fönster med EnumWindows, EnumChildWindows, EnumThreadWindows-funktioner. Handtagen på de hittade fönstren skickas som en parameter till återuppringningsfunktionen.

Hitta handtaget till fönstret på en viss plats på skärmen. Ring en av funktionerna: WindowFromPoint, ChildWindowFromPoint eller ChildWindowFromPointEx.

Steg 2

Få processhandtag. Skapa en ny process genom att anropa funktionerna CreateProcess, CreateProcessAsUser, CreateProcessWithTokenW eller CreateProcessWithLogonW. De returnerar alla ett handtag till den nya processen i hProcess-fältet i PROCESS_INFORMATION-strukturen, där pekaren ska skickas till dem som den sista parametern.

Hitta handtaget till processen med dess kända identifierare. Använd OpenProcess-samtalet. ID för alla pågående processer kan erhållas, till exempel med funktionerna CreateToolhelp32Snapshot, Process32First och Process32Next i Tool Help-biblioteket.

Hämta pseudohandtaget för den aktuella processen med funktionen GetCurrentProcess.

Steg 3

Få beskrivningar av trådar. Funktionerna CreateThread och CreateRemoteThread skapar trådar i sin egen respektive andras process och returnerar sina handtag. Du kan öppna en befintlig tråd med dess identifierare och få motsvarande handtag med OpenThread-funktionen. Pseudohanteringen för det aktuella flödet returneras när GetCurrentThread anropas.

Steg 4

Beskrivningar för filer, kataloger, fysiska diskar, diskvolymer, konsoler, kommunikationsresurser (I / O-portar), e-postplatser och namngivna pipor kan erhållas genom att anropa en enda funktion, CreateFile.

Steg 5

File-to-memory mapping object descriptors returneras av samtal till CreateFileMapping och OpenFileMapping.

Steg 6

Funktionerna CreateMutex, CreateSemaphore och CreateEvent skapar och funktionerna OpenMutex, OpenSemaphore och OpenEvent öppnar befintliga synkroniseringsobjekt (mutexes, semaforer och händelser). De returnerar alla beskrivningar.

Steg 7

Alla GDI-objekt (som enhetskontexter, teckensnitt, penslar, pennor, hårdvaruberoende och oberoende bitmappar, DIB-sektioner etc.) manipuleras genom sina beskrivningar. Funktionerna för att skapa GDI-objekt är många och bör konsulteras i MSDN-sektionen för information om dem.

Steg 8

En deskriptor som erhållits i en process kan som regel inte användas i en annan. I vissa fall är det dock möjligt att få en duplikatbeskrivare som motsvarar det primära objektet. Ring DuplicateHandle API för att duplicera handtaget. Detta kan till exempel användas för att dela namngivna synkroniseringsobjekt eller kanaler mellan flera processer.

Rekommenderad: