Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ağ İzleyicisi, ayrıştırıcının varlığını belirlemek için DllMain dışarı aktarma işlevini kullanır ve Ağ İzleyicisi'nin ayrıştırıcı hakkındaki bilgileri depolamak için kullandığı kaynakları serbest bırakır.
Ağ İzleyicisi ilk kez DllMain çağırdığında, ayrıştırıcı DLL, CreateProtocol çağırarak aşağıdakileri yapar:
- Ayrıştırıcının algılayan protokolü belirtin.
- Ağ İzleyicisi'nin çağırdığı kalan ayrıştırıcı dışa aktarma işlevleri için giriş noktaları sağlayın.
Ağ İzleyicisi DllMain son kez çağırdığında DllMain, Ağ İzleyicisi'nin ayrıştırıcı hakkındaki bilgileri depolamak için kullandığı tüm kaynakları serbest bırakmak için DestroyProtocolçağırır.
Aşağıdaki yordam, DllMainuygulamak için gereken adımları tanımlar.
DllMain'i uygulamak için
ENTRYPOINTS yapısını, CreateProtocol işlevi ve global Attach değişkeni için belirtin. Attach değişkeni, çalışan protokol örneklerinin sayısını izlemek için kullanılır.
İşletim sisteminin ayarlayan Command parametresinin değerine bakın.
Command parametresi DLL_PROCESS_ATTACH ve Ekle 0 olarak ayarlandıysa, aşağıdaki dışarı aktarma işlevleri için protokol adını ve giriş noktalarını sağlamak üzere CreateProtocolçağırın.
- Kaydet
- Kaydını Kaldır
- ÇerçeveyiTanı
- ÖzellikleriEkle
- FormatProperties (yalnızca Ağ İzleyicisi protokol özelliklerini görüntüleyecekse gereklidir).
Command parametresi DLL_PROCESS_DETACH olarak ayarlandıysa ve Bağla 0 ise, CreateProtocol tarafından döndürülen örnek tanıtıcısını kullanarak DestroyProtocol çağırın.
DllMain ayrıştırıcı işlevinin her zaman TRUE döndürmesi gerektiğinden TRUE döndür.
Aşağıda, DllMaintemel bir uygulaması yer alır. Kod örneği, Command parametresinin değerlerini yakalamak için bir case deyimi kullanır ve bu değerler yardımıyla CreateProtocol veya DestroyProtocol çağrılması gerekip gerekmediğini belirler.
#include <windows.h>
// Entry point structure for parser export functions and global
// Attach variable.
ENTRYPOINTS EntryPoints =
{
Register,
Deregister,
RecognizeFrame,
AttachProperties,
FormatProperties
};
DWORD Attached = 0;
BOOL WINAPI DllMain(HANDLE hInstance, ULONG Command, LPVOID Reserved)
{
switch(Command)
{
// Call CreateProtocol.
case DLL_PROCESS_ATTACH:
// Loading parser DLL.
if(Attached == 0)
{
hProtocol = CreateProtocol( "ProtocolName",
&EntryPoints,
ENTRYPOINTS_SIZE);
}
Attached++;
break;
// Call DestroyProtocol.
case DLL_PROCESS_DETACH:
// Unloading parser DLL.
Attached--;
if(Attached == 0)
{
DestroyProtocol( hProtocol);
}
break;
}
return TRUE;
}