Tanımlayıcı Nasıl Alınır

İçindekiler:

Tanımlayıcı Nasıl Alınır
Tanımlayıcı Nasıl Alınır

Video: Tanımlayıcı Nasıl Alınır

Video: Tanımlayıcı Nasıl Alınır
Video: SPSS'te Tanımlayıcı İstatistikler ve Grafik Oluşturma 2024, Mayıs
Anonim

Windows işletim sistemlerinin uygulama programlama arabirimi, bir dizi işlevle temsil edilir. Çağrıldıklarında çeşitli nesneler (dosyalar, işlemler, iş parçacıkları, senkronizasyon nesneleri vb.) oluşturulabilir. Bu nesnelere yeterince soyut ve birleşik bir erişim sağlamak için, tanımlamaları tanımlayıcılar - "kişisel olmayan" sayısal değerler kullanılarak gerçekleştirilir.

Tanımlayıcı nasıl alınır
Tanımlayıcı nasıl alınır

Gerekli

  • - Windows API kullanımına izin veren bir programlama dilinden bir çevirmen;
  • - muhtemelen Windows Platform SDK'sı.

Talimatlar

Aşama 1

Pencere tutamaçlarını alın. Bunu yapmanın birçok yolu var. Kesin yöntem nihai hedefe bağlıdır.

Bir pencere oluşturmak için CreateWindow veya CreateWindowEx API'lerini kullanın. Başarı için bir tutamaç ve başarısızlık için NULL döndürürler.

Sırasıyla FindWindow ve FindWindowEx işlevlerini kullanarak çeşitli parametrelerle üst düzey pencereleri ve alt pencereleri arayın. Başarılı aramada, pencere tanıtıcısı alınacaktır.

Pencereleri EnumWindows, EnumChildWindows, EnumThreadWindows işlevleriyle numaralandırın. Bulunan pencerelerin tutamaçları, geri çağırma işlevine bir parametre olarak iletilecektir.

Ekranda belirli bir konumda bulunan pencerenin tutamağını bulun. Şu işlevlerden birini çağırın: WindowFromPoint, ChildWindowFromPoint veya ChildWindowFromPointEx.

Adım 2

İşlem tutamaçlarını alın. CreateProcess, CreateProcessAsUser, CreateProcessWithTokenW veya CreateProcessWithLogonW API işlevlerini çağırarak yeni bir süreç oluşturun. Hepsi, PROCESS_INFORMATION yapısının hProcess alanındaki yeni sürece, son parametre olarak kendilerine iletilmesi gereken işaretçiye bir tanıtıcı döndürür.

Bilinen tanımlayıcısına göre işlemin tanıtıcısını bulun. OpenProcess çağrısını kullanın. Çalışan tüm işlemlerin kimlikleri, örneğin Araç Yardım kitaplığının CreateToolhelp32Snapshot, Process32First ve Process32Next işlevleri kullanılarak elde edilebilir.

GetCurrentProcess işlevini kullanarak geçerli işlemin sözde tanıtıcısını alın.

Aşama 3

Konu tanımlayıcılarını alın. CreateThread ve CreateRemoteThread işlevleri, tanıtıcılarını döndürerek sırasıyla kendilerinin ve başka birinin işlemlerinde iş parçacıkları oluşturur. Tanımlayıcısını kullanarak mevcut bir iş parçacığını açabilir ve OpenThread işlevini kullanarak ilgili tanıtıcıyı alabilirsiniz. GetCurrentThread çağrıldığında, geçerli akışın sözde tanıtıcısı döndürülür.

4. Adım

Dosyalar, dizinler, fiziksel diskler, disk birimleri, konsollar, iletişim kaynakları (G/Ç bağlantı noktaları), posta yuvaları ve adlandırılmış kanallar için tanımlayıcılar, tek bir işlev olan CreateFile çağrılarak elde edilebilir.

Adım 5

Dosyadan belleğe eşleme nesne tanımlayıcıları, CreateFileMapping ve OpenFileMapping'e yapılan çağrılarla döndürülür.

6. Adım

CreateMutex, CreateSemaphore ve CreateEvent işlevleri oluşturur ve OpenMutex, OpenSemaphore ve OpenEvent işlevleri mevcut eşitleme nesnelerini (muteksler, semaforlar ve olaylar) açar. Hepsi tanımlayıcı döndürür.

7. Adım

Tüm GDI nesneleri (aygıt bağlamları, yazı tipleri, fırçalar, kalemler, donanıma bağlı ve bağımsız bit eşlemler, DIB bölümleri vb.) tanımlayıcıları aracılığıyla işlenir. GDI nesneleri oluşturma işlevleri çoktur ve bunlar hakkında bilgi için MSDN bölümünde başvurulmalıdır.

8. Adım

Bir işlemde elde edilen bir tanımlayıcı kural olarak başka bir işlemde kullanılamaz. Bununla birlikte, bazı durumlarda, birincil nesneye karşılık gelen yinelenen bir tanımlayıcı elde etmek mümkündür. Tutamacı çoğaltmak için DuplicateHandle API'sini çağırın. Bu, örneğin adsız senkronizasyon nesnelerini veya kanalları birden çok işlem arasında paylaşmak için kullanılabilir.

Önerilen: