Deskriptoru Necə əldə Etmək Olar

Mündəricat:

Deskriptoru Necə əldə Etmək Olar
Deskriptoru Necə əldə Etmək Olar

Video: Deskriptoru Necə əldə Etmək Olar

Video: Deskriptoru Necə əldə Etmək Olar
Video: Allergiyanın Dərmanı Sayılan Bitki 2024, Noyabr
Anonim

Windows əməliyyat sistemlərinin tətbiq proqramlaşdırma interfeysi bir sıra funksiyalarla təmsil olunur. Çağırıldıqda müxtəlif obyektlər (fayllar, proseslər, mövzu, sinxronizasiya obyektləri və s.) Yaradıla bilər. Bu obyektlərə kifayət qədər mücərrəd və vahid bir giriş təmin etmək üçün onların identifikasiyası descriptorlar - "şəxssiz" ədədi dəyərlər istifadə edilərək həyata keçirilir.

Deskriptoru necə əldə etmək olar
Deskriptoru necə əldə etmək olar

Zəruri

  • - Windows API istifadəsinə imkan verən bir proqramlaşdırma dilindən tərcüməçi;
  • - ehtimal ki, Windows Platform SDK.

Təlimat

Addım 1

Pəncərə tutacaqlarını əldə edin. Bunu etmək üçün bir çox yol var. Dəqiq metod son hədəfdən asılıdır.

Pəncərə yaratmaq üçün CreateWindow və ya CreateWindowEx API istifadə edin. Müvəffəqiyyətə və uğursuzluğa NULL qayıdırlar.

Müvafiq olaraq FindWindow və FindWindowEx funksiyalarından istifadə edərək müxtəlif səviyyələrdə pəncərələri və uşaq pəncərələrini axtarın. Uğurlu axtarışda pəncərə tutacağı əldə ediləcəkdir.

EnumWindows, EnumChildWindows, EnumThreadWindows funksiyaları ilə pəncərələri sadalayın. Tapılan pəncərələrin tutacaqları geri çağırma funksiyasına bir parametr olaraq ötürüləcəkdir.

Ekranda müəyyən bir mövqedə yerləşən pəncərənin qolunu tapın. Funksiyalardan birini axtarın: WindowFromPoint, ChildWindowFromPoint və ya ChildWindowFromPointEx.

Addım 2

Proses tutacaqlarını əldə edin. CreateProcess, CreateProcessAsUser, CreateProcessWithTokenW və ya CreateProcessWithLogonW API funksiyalarını çağıraraq yeni bir proses yaradın. Hamısı, PROCESS_INFORMATION quruluşunun hProcess sahəsindəki yeni prosesə bir qolu qaytarır və bu göstərici onlara son parametr olaraq ötürülməlidir.

Məlum olan identifikatoru ilə prosesin sapını tapın. OpenProcess zəngindən istifadə edin. Bütün işləyən proseslərin identifikatorları, məsələn, Tool Help kitabxanasının CreateToolhelp32Snapshot, Process32First və Process32Next funksiyalarından istifadə etməklə əldə edilə bilər.

GetCurrentProcess funksiyasından istifadə edərək cari prosesin yalançı qolunu əldə edin.

Addım 3

Mövzuların təsvirçilərini alın. CreateThread və CreateRemoteThread funksiyaları, tutacaqlarını qaytararaq sırasıyla öz və başqasının prosesində mövzu yaradır. Mövcud bir mövzu identifikatorunu istifadə edərək aça bilər və OpenThread funksiyasından istifadə edərək uyğun sapı əldə edə bilərsiniz. GetCurrentThread çağırıldıqda cari axının yalançı qolu qaytarılır.

Addım 4

Fayllar, qovluqlar, fiziki disklər, disk həcmləri, konsollar, rabitə mənbələri (G / Ç portları), poçt yuvaları və adlanan borular üçün təsvirlər, CreateFile adlı bir funksiyanı çağırmaqla əldə edilə bilər.

Addım 5

Yaddaşa sənədləşdirmə üçün obyekt təsviri sənədləri CreateFileMapping və OpenFileMapping-ə çağırışlarla qaytarılır.

Addım 6

CreateMutex, CreateSemaphore və CreateEvent funksiyaları yaradır və OpenMutex, OpenSemaphore və OpenEvent funksiyaları mövcud sinxronizasiya obyektlərini (mutekslər, semaforlar və hadisələr) açır. Hamısı təsviri qaytaranlar.

Addım 7

Bütün GDI obyektləri (məsələn, cihaz kontekstləri, şriftlər, fırçalar, qələmlər, aparatdan asılı və müstəqil bitmaplər, DIB bölmələri və s.) Öz təsviratçıları vasitəsilə idarə olunur. GDI obyektlərinin yaradılması funksiyaları çoxdur və onlar haqqında məlumat üçün MSDN bölməsində məsləhətləşmələr aparılmalıdır.

Addım 8

Bir müddətdə əldə edilən bir descriptor, bir qayda olaraq, digərində istifadə edilə bilməz. Bununla birlikdə, bəzi hallarda əsas obyektə uyğun bir cüt təsviri almaq mümkündür. Dəstəyi çoxaltmaq üçün DuplicateHandle API-yə zəng edin. Bu, məsələn, adsız sinxronizasiya obyektlərini və ya kanalları birdən çox proses arasında bölüşmək üçün istifadə edilə bilər.

Tövsiyə: