API kümesi yükleyici işlemi

Önemli

Bu konudaki bilgiler Windows 10 ve sonraki sürümleri için geçerlidir. Bu sürümlere burada "Windows" adını vereceğiz ve gerektiğinde tüm özel durumları çağıracağız.

API kümeleri, kitaplık bağlama işlemine bir modül ad alanı yeniden yönlendirmesini etkili bir şekilde tanıtmak için kitaplık yükleyicisindeki işletim sistemi desteğine güvenir. API kümesi sözleşme adı, api kümesinin uygun uygulamasını barındıran hedef konak ikilisine başvurunun çalışma zamanı yeniden yönlendirmesini gerçekleştirmek için kitaplık yükleyicisi tarafından kullanılır.

Yükleyici çalışma zamanında bir API kümesine bağımlılıkla karşılaştığında, yükleyici bir API kümesinin konak ikili dosyasını tanımlamak için görüntüdeki yapılandırma verilerine başvurur. Bu yapılandırma verileri, API kümesi şemasıolarak adlandırılır. Şema, işletim sisteminin bir özelliği olarak bir araya getirilir ve API kümeleri ile ikili dosyalar arasındaki eşleme, belirli bir cihaza hangi ikili dosyaların dahil olduğuna bağlı olarak farklılık gösterebilir. Şema, ikili konağın modül adları farklı Windows cihazlarında yeniden adlandırılmış veya tamamen yeniden düzenlenmiş olsa bile tek bir ikili dosyadaki içeri aktarılan bir işlevin farklı cihazlarda doğru şekilde yönlendirilmesine olanak tanır.

Windows, API kümelerini kullanmak ve arabirim uygulamak için iki standart tekniği destekler: doğrudan iletme ve ters iletme.

Doğrudan iletme

Bu yapılandırmada, tüketen kod bir API kümesi modül adını doğrudan içeri aktarır. Bu içeri aktarma işlemi tek bir işlemle çözülür ve en az ek yüke sahip en verimli yöntemdir. Kavramsal olarak, bu çözüm aşağıdaki örnekte gösterildiği gibi farklı Windows cihazlarında farklı ikili dosyalara işaret edebilir:

İçeri aktarılan API kümesi: api-feature1-l1-1-0.dll

  • Windows bilgisayarı ->feature1.dll
  • HoloLens ->feature1_holo.dll
  • IoT ->feature1_iot.dll

Eşlemeler özel şema veri deposunda tutulduğundan, .dll ile biten bir API kümesi adının diskteki bir dosyaya doğrudan başvurmadığı anlamına gelir. API kümesi adının .dll bölümü yalnızca yükleyicinin gerektirdiği bir kuraldır. API kümesi adı daha çok fiziksel DLL dosyası için diğer ad veya sanal ad gibidir. Bu, adın tüm Windows cihazları aralığında taşınabilir olmasını sağlar.

Ters iletme

API kümesi adları cihazlar arasında modüller için kararlı bir ad alanı sağlarken, her ikiliyi bu yeni sisteme dönüştürmek her zaman pratik değildir. Örneğin, bir uygulama uzun yıllardır ortak kullanımda olabilir ve uygulamanın ikili dosyalarını yeniden derlemek uygun olmayabilir. Ayrıca bazı uygulamaların belirli API kümeleri kullanılmadan önce oluşturulan sistemlerde çalışmaya devam etmesi gerekebilir.

Bu uyumluluk düzeyine uyum sağlamak için Win32 API yüzeyinin bir alt kümesini kapsayan tüm Windows cihazlarında ileticiler bir sistem sağlanır. Bu ileticiler, Windows bilgisayarlarında tanıtılan modül adlarını kullanır ve tüm Windows cihazları arasında uyumluluk sağlamak için API Kümesi sisteminden yararlanacaktır.

Yükleyici işlemi şöyle davranır:

  1. Windows bilgisayarı dışındaki bir cihazda, yükleyiciye cihazda bulunmayan eski bir Windows bilgisayarı modülü adı bağımlılığı sunulur.
  2. Yükleyici bu modül için bir API kümesi ileticisi bulur ve belleğe yükler.
  3. İletici, çağrılan işlev için API kümesine yönelik bir eşlemeye sahiptir.
  4. Yükleyici, verilen cihaz için uygun konak ikili dosyasını bulur.

Kavramsal olarak eşleme şöyle görünür:

İçeri aktarılan DLL: feature1.dll

  • Windows bilgisayarı ->feature1.dll
  • HoloLens ->feature1.dll ileticisi ->api-feature1-l1-1-0.dll ->feature1_holo.dll
  • IoT ->feature1.dll ileticisi ->api-feature1-l1-1-0.dll ->feature1_iot.dll

Sonuç, doğrudan iletme ile işlevsel olarak aynıdır, ancak bunu uygulama uyumluluğunu en üst düzeye çıkaracak şekilde gerçekleştirir.

Not

Ters iletme, yalnızca Win32 API yüzeyinin bir alt kümesi için kapsam sağlar. Windows'un masaüstü sürümlerini hedefleyen uygulamaların tüm Windows cihazlarında çalışmasına izin vermez.