Aracılığıyla paylaş


/ safeseh (resim bulunan güvenli özel durum işleyicileri)

/SAFESEH[:NO]

Zaman /SAFESEH belirtilmişse, linker yalnızca üretmek görüntüyü görüntünün güvenli özel durum işleyicileri bir tablo oluşturabilir. Bu tablo için hangi özel durum işleyicilerini yansıma için geçerli işletim sistemini belirtir.

/SAFESEHx 86 için bağlanırken yalnızca geçerlidir hedefler. /SAFESEHzaten aksi belirtilmedikçe özel durum işleyicileri sahip platformları için desteklenmiyor. Örneğin, x64 ve Itanium, tüm özel durum işleyicileri pdata belirtilmiştir. ML64.exe (xdata ve pdata) seh bilgilerini göster ek açıklamalar eklemek için destek ml64 işlevleri rahatça olanak tanıyan görüntüye sahiptir. Daha fazla bilgi için bkz. masm x 64 (ml64.exe).

/SAFESEH Belirtilmezse, linker güvenli özel durum işleyicileri bir tablo içeren bir görüntüyü tüm modülleri güvenli özel durum işleme özelliğiyle uyumluysa üretmek. Tüm modülleri güvenli istisna işleme özelliği ile uyumlu değil, sonuçta elde edilen görüntü güvenli özel durum işleyicilerini tablosu içermez. /subsystem WINDOWSCE veya EFI_ * seçeneklerden birini belirtir alt sistemler hiçbiri yaptığınız linker güvenli özel durum işleyicileri bir tabloyla bir görüntü oluşturmak denemez bilgileri kullanın.

/SAFESEH:NO Belirtilmişse, linker değil üretmek güvenli özel durum işleyicileri bir tablo içeren bir görüntüyü bile tüm modülleri güvenli istisna işleme özelliği ile uyumludur.

Bir veya daha fazla bağlayıcı giriş dosyalarına (modülleri) güvenli özel durum işleyicileri özelliğiyle uyumlu olmadığı için bağlayıcı bir görüntü üretmek mümkün olmadığı için en yaygın nedenidir. Visual C++'ın önceki bir sürümünden bir derleyici ile oluşturulduğundan modülü güvenli özel durum işleyicileri ile uyumlu olmadığı için ortak bir nedenidir.

Kullanarak yapılandırılmış özel durum işleyicisi olarak bir işlev kaydedebilirsiniz .safeseh.

Varolan bir işaretlemek mümkün değil ikili olarak güvenli özel durum işleyicileri (veya hiçbir özel durum işleyicileri); Güvenli özel durum işleme hakkında bilgi derleme sırasında eklenmesi gerekir.

c çalışma zamanı kitaplığı kullanarak uygulama Bağlayıcısı'nın güvenli özel durum işleyicilerini tablosunu yeteneği bağlıdır. İle bağlanıyorsanız /NODEFAULTLIB ve güvenli özel durum işleyicileri bir tablosu istiyorsanız, yük config yapı (loadcfg.c crt kaynak dosyada bulunan gibi) sağlamanız gerekip Visual C++ için tanımlanmış olan tüm girişleri içerir. Örne?in:

#include <windows.h>
extern DWORD_PTR __security_cookie;  /* /GS security cookie */

/*
 * The following two names are automatically created by the linker for any
 * image that has the safe exception table present.
*/
 
extern PVOID __safe_se_handler_table[]; /* base of safe handler entry table */
extern BYTE  __safe_se_handler_count;  /* absolute symbol whose address is
                                           the count of table entries */
typedef struct {
    DWORD       Size;
    DWORD       TimeDateStamp;
    WORD        MajorVersion;
    WORD        MinorVersion;
    DWORD       GlobalFlagsClear;
    DWORD       GlobalFlagsSet;
    DWORD       CriticalSectionDefaultTimeout;
    DWORD       DeCommitFreeBlockThreshold;
    DWORD       DeCommitTotalFreeThreshold;
    DWORD       LockPrefixTable;            // VA
    DWORD       MaximumAllocationSize;
    DWORD       VirtualMemoryThreshold;
    DWORD       ProcessHeapFlags;
    DWORD       ProcessAffinityMask;
    WORD        CSDVersion;
    WORD        Reserved1;
    DWORD       EditList;                   // VA
    DWORD_PTR   *SecurityCookie;
    PVOID       *SEHandlerTable;
    DWORD       SEHandlerCount;
} IMAGE_LOAD_CONFIG_DIRECTORY32_2;

const IMAGE_LOAD_CONFIG_DIRECTORY32_2 _load_config_used = {
    sizeof(IMAGE_LOAD_CONFIG_DIRECTORY32_2),
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    &__security_cookie,
    __safe_se_handler_table,
    (DWORD)(DWORD_PTR) &__safe_se_handler_count
};

Visual Studio geliştirme ortamında bu bağlayıcı seçeneğini ayarlamak için

  1. Projenin Özellik Sayfaları iletişim kutusunu açın. Ayrıntılı bilgi için bkz: Visual C++ proje özelliklerini ayarlama.

  2. Tıklatın Linker klasörü.

  3. Tıklatın komut satırı özellik sayfası.

  4. Seçeneğine yazın Ek seçenekler kutusu.

Bu bağlayıcı seçeneği programlı olarak ayarlamak için

Ayrıca bkz.

Başvuru

Bağlayıcı seçeneklerini ayarlama

Bağlantı Oluşturucu Seçenekleri