SORU
2 EKİM 2009, Cuma


Bir 'Herhangi bir CPU 86 CLR' kuvvet .NET derleme

.'Platform Hedef:' derleyici seçeneği sağlar .Herhangi bir CPU NET NET Meclisi 64 bir makinede 64 bit ve x 86 makinede 32 bit olarak çalıştırmak için. Aynı zamanda bir derleme x 64 makine 'Platformu Hedef: 86' derleyici seçeneği. kullanarak 86 olarak çalışmaya zorlamak için

"Herhangi bir CPU' bayrak, ama 86 ya da x 64 CLR çalıştırılabilir olup olmadığını belirlemek? ile derleme çalıştırmak mümkün Normalde bu karar, temel sistem verileri temel CLR/OS Loader benim anladığım gibi) tarafından yapılır.

C yazmaya çalışıyorum# .NET uygulama (okuma: kod enjekte) diğer çalışan süreçleri ile etkileşim. 64 süreçleri yalnızca diğer işler x 64 ve 86 ile aynı içine enjekte edebilir. İdeal olarak, TAM zamanında derleme ve yararlanmak istiyorumHerhangi bir CPUseçeneği tek bir uygulama ya da x 64 veya 86 süreçleri içine enjekte etmek için kullanılır (64 makinede).

Fikir uygulama olarak derlenmiş olurHerhangi bir CPU. 64 makinede 64 bit olarak çalışır. Hedef x 86 süreç olarak kendini çalıştırmak için CLR zorlayarak yeniden başlatmasını gerektiğini 86, ise. Bu mümkün mü?

CEVAP
2 EKİM 2009, Cuma


Uygulamayı çalıştırmak ve statik olarak ne kadar değişir CorFlags uygulamayı kullanarak bulabilirsiniz. Uygulamanın nasıl çalışacağını öğrenmek için, kullanın:

corflags <PathToExe>

Uygulamanın nasıl çalışacağını değiştirmek için kullanın:

corflags /32bit   <PathToExe>

Bu EXE dosyası 32-bit işlem olarak çalışır. Meclis çalışmalıdır hakkında bilgi PE başlığında depolanır. Yığın Taşması soru bakınHow to find if a native DLL file is compiled as x64 or x86?.

Eğer çalışma zamanında kod enjekte etmek istiyorsanız, C /COM .NETBir profiler yazmak zorunda. Bakın.NET Internals: The Profiling APIveProfiling (Unmanaged API Reference)daha fazla bilgi için.

JitCompilationStarted geri arama uygulamak ve orada iş yapmak gerekir. Eğer bu yönde iseniz, enjekte DLL DOSYASı, hem x 86 ve x 64 inşa etmek gerekir. Yerel DLL dosyaları aşağıdaki ortam değişkenleri ayarlanır bir kez CLR yüklenmiş olur:

Cor_Enable_Profiling=0x1
COR_PROFILER={CLSID-of-your-native-DLL-file}

Eğer 64-bit sürümü olacak '' 64 bit işlemleri ve 32-bit sürümü olacak '" 32-bit işler. bu doğru o zaman ayarladıysanız

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • habpsu

    habpsu

    25 Temmuz 2007
  • Matt Harding

    Matt Harding

    23 Mayıs 2006
  • Stanislav Petrov

    Stanislav Pe

    7 ŞUBAT 2009