DRM, DRM

Android DRM HAL simgesi

Bu belge, Android dijital haklar yönetimi (DRM) çerçevesine genel bir bakış sağlar ve bir DRM eklentisinin uygulaması gereken arabirimleri tanıtır. Bu belge, bir DRM şeması tarafından tanımlanabilecek sağlamlık kurallarını veya uyumluluk kurallarını açıklamamaktadır.

Çerçeve

Android platformu, uygulamaların, içerikle ilişkili lisans kısıtlamalarına göre hakları korunan içeriği yönetmesine olanak tanıyan genişletilebilir bir DRM çerçevesi sağlar. DRM çerçevesi birçok DRM şemasını destekler; bir cihazın desteklediği DRM şemaları cihaz üreticisine bağlıdır. DRM çerçevesi, uygulama geliştiricileri için birleşik bir arayüz sağlar ve DRM işlemlerinin karmaşıklığını gizler. DRM çerçevesi, korumalı ve korumasız içerik için tutarlı bir çalışma modu sağlar. DRM şemaları, lisans meta verilerine göre karmaşık kullanım modellerini tanımlayabilir. DRM çerçevesi, DRM içeriği ile lisans arasındaki ilişkiyi sağlar ve hak yönetimini yönetir. Bu, medya oynatıcının DRM korumalı veya korumasız içerikten soyutlanmasını sağlar. Korumalı medya akışlarının şifresini çözmek için anahtarları elde etmek için sınıf için MediaDrm'e bakın.

Android DRM HAL'ı
Şekil 1a. Android 11'den önceki DRM donanım soyutlama Katmanı
Android DRM HAL sonrası R
Şekil 1b. Android 11'de başlayan DRM donanım soyutlama Katmanı

Zengin dijital içeriğin kullanılabilirliği, mobil cihazlardaki kullanıcılar için önemlidir. Android geliştiricileri ve dijital içerik yayıncıları, içeriklerini geniş çapta kullanılabilir hale getirmek için Android ekosisteminde desteklenen tutarlı bir DRM uygulamasına ihtiyaç duyar. Bu dijital içeriği Android cihazlarda kullanılabilir hale getirmek ve tüm cihazlarda kullanılabilen en az bir tutarlı DRM olduğundan emin olmak için Google, uyumlu Android cihazlarda DRM'yi lisans ücreti olmadan sağlar. DRM eklentisi, Android DRM çerçevesiyle entegredir ve premium içeriği ve kullanıcı kimlik bilgilerini güvence altına almak için donanım destekli koruma kullanabilir.

DRM eklentisi tarafından sağlanan içerik koruması, temel alınan donanım platformunun güvenlik ve içerik koruma özelliklerine bağlıdır. Cihazın donanım yetenekleri, bir güvenlik güven zinciri oluşturmak ve kriptografik anahtarların korunmasını sağlamak için donanım güvenli önyüklemeyi içermelidir. Cihazın içerik koruma yetenekleri, cihazdaki şifresi çözülen çerçevelerin korunmasını ve güvenilir bir çıktı koruma mekanizması aracılığıyla içerik korumasını içermelidir. Tüm donanım platformları, yukarıdaki güvenlik ve içerik koruma özelliklerinin tümünü desteklemez. Güvenlik hiçbir zaman yığında tek bir yerde uygulanmaz, bunun yerine donanım, yazılım ve hizmetlerin entegrasyonuna dayanır. Donanım güvenlik işlevlerinin, güvenilir bir önyükleme mekanizmasının ve güvenlik işlevlerinin ele alınması için yalıtılmış bir güvenli işletim sisteminin birleşimi, güvenli bir aygıt sağlamak için kritik öneme sahiptir.

Mimari

DRM çerçevesi, uygulamadan bağımsız olacak şekilde tasarlanmıştır ve şemaya özel bir DRM eklentisinde belirli DRM şeması uygulamasının ayrıntılarını özetler. DRM çerçevesi, karmaşık DRM işlemlerini yürütmek, lisansları almak, cihazı sağlamak, DRM içeriğini ve lisansını ilişkilendirmek ve son olarak DRM içeriğinin şifresini çözmek için basit API'ler içerir.

Android DRM çerçevesi iki mimari katmanda uygulanmaktadır:

  • Android uygulama çerçevesi aracılığıyla uygulamalara maruz kalan bir DRM çerçevesi API'si.
  • Çeşitli DRM şemaları için hak yönetimi ve şifre çözmeyi işlemek üzere DRM eklentileri (aracılar) için bir arabirim sunan yerel bir kod DRM çerçevesi.
Android DRM Çerçevesi
Şekil 2a. Android 11'den önceki DRM çerçevesi
Android DRM Çerçevesi
Şekil 2b. Android 11'de başlayan DRM çerçevesi

Daha fazla ayrıntı için Android Media DRM ve Android Media Crypto'ya bakın.

DRM Eklentileri

Sistem başlangıcında, DRM çerçevesi HAL örneklerini/hizmetlerini ( .rc dosyalarında açıklanmıştır) tarar ve eklentiler HIDL kayıt defteri aracılığıyla keşfedilir. Media DRM Sunucusu ( mediadrmserver ) hem CryptoHal hem de DrmHal nesneleri oluşturur. CryptoHal ve DrmHal daha sonra satıcıya özel uygulamalarla eklentileri çağırır.

Eklentiler, ciltlenmiş HAL'leri uygulamalıdır. Bağlanmış HAL'ler, HAL'leri yeniden oluşturmaya gerek kalmadan çerçevenin değiştirilmesine izin veren HAL arabirim tanımlama dilini (HIDL) kullanır.

Eklentiler, satıcılar veya SOC üreticileri tarafından oluşturulur ve cihazda bir /vendor bölümüne yerleştirilir. Android 8.0 veya üzeri ile başlatılan tüm cihazlar, HIDL dilinde yazılmış ciltlenmiş HAL'leri desteklemelidir.

uygulama

Bir eklenti tarafından yeni DRM çerçeveleri API'lerini uygulamak için:

  1. Cihazın derleme dosyalarına eklenti hizmeti ekleyin.
  2. Aygıt bildirimini güncelleyin.
  3. SELinux izinleri ekleyin.
  4. /vendor altında bir .rc dosyası oluşturun.
  5. Eklentiyi uygulayın.

API'ler, IDrmPlugin.hal , ICryptoPlugin.hal , IDrmFactory.hal ve ICryptoFactory.hal her bir sürümünde tanımlanmıştır.

PLATFORM_ROOT/hardware/interfaces/drm/VERSION/

Cihaz derleme dosyalarına eklenti hizmeti ekleme

Örneğin, arayüz 1.3 desteği eklemek için VENDOR DEVICE /device.mk dosyası android.hardware.drm@1.3-service.* paketlerini içermelidir:

1.0 ila 1.2 sürümleri R / Android 11'de kullanımdan kaldırılmıştır. R'ye yükseltme yapan cihazların 1.0 ila 1.2 sürümlerini çalıştırmalarına hala izin verilir. Ancak, R ile başlatılan yeni cihazlar yalnızca 1.3 sürümünü çalıştırmalıdır.


  PRODUCT_PACKAGES += \
    android.hardware.drm@1.0-impl \
    android.hardware.drm@1.0-service \
    android.hardware.drm@1.3-service.clearkey \
    android.hardware.drm@1.3-service.widevine

Cihaz bildirimini güncelleme

Aygıtın vendor manifest.xml dosyası aşağıdaki girişleri içermelidir:


  <hal format="hidl">
    <name>android.hardware.drm</name>
      <transport>hwbinder</transport>
      <fqname>@1.3::ICryptoFactory/clearkey</fqname>
      <fqname>@1.3::IDrmFactory/clearkey</fqname>
      <fqname>@1.3::ICryptoFactory/widevine</fqname>
      <fqname>@1.3::IDrmFactory/widevine</fqname>
  </hal>

Alternatif olarak, vintf_fragments kullanmanızı öneririz.

SELinux izinleri ekleme

  1. SATICI CİHAZINA ekle VENDOR DEVICE /sepolicy/vendor/file.te
    type mediadrm_vendor_data_file, file_type, data_file_type;
  2. SATICI CİHAZINA ekle VENDOR DEVICE /sepolicy/vendor/file_contexts

    Yeni sürümler için güncelleme yapmaktan kaçınmak için sürüm numaralarını belirtmek için normal ifadeler kullanmanızı öneririz, örneğin:

    /vendor/bin/hw/android\.hardware\.drm@\[0-9]+\.[0-9]+-service\.clearkey
          u:object_r:hal_drm_clearkey_exec:s0
    /data/vendor/mediadrm(/.*)? u:object_r:mediadrm_vendor_data_file:s0

    Alternatif olarak, sürüm numaralarını aşağıda gösterildiği gibi güncelleyin.

    /vendor/bin/hw/android\.hardware\.drm@1\.3-service\.clearkey
          u:object_r:hal_drm_clearkey_exec:s0
    /data/vendor/mediadrm(/.*)? u:object_r:mediadrm_vendor_data_file:s0
  3. device/sepolicy/vendor/hal_drm_clearkey.te
    allow hal_drm_clearkey mediadrm_vendor_data_file:dir create_dir_perms;
        allow hal_drm_clearkey mediadrm_vendor_data_file:file create_file_perms;
        

/vendor altında bir .rc dosyası oluşturma

.rc dosyası, bir hizmet başlatıldığında yapılacak işlemleri belirtir.

Ayrıntılar için Android Init Dili'ne bakın.

Eklentiyi uygulama

  1. Eklenti hizmetinin service.cpp main() giriş noktasını uygulayın.
  2. ICryptoPlugin , IDrmPlugin , ICryptoFactory ve IDrmFactory .
  3. Eklentideki yeni API'leri uygulayın.

DRM eklentisi ayrıntıları

DRM eklentisi satıcıları DrmFactory , CryptoFactory ve DRM eklentisini uygular.

DrmFabrika

DrmHal sınıfı, kayıtlı DRM eklenti hizmetlerini arar ve DrmFactory sınıfı aracılığıyla belirli bir şifreleme şemasını destekleyen ilgili eklentileri oluşturur.

IDrmFactory, bir satıcının drm HAL'i ile createPlugin API aracılığıyla etkileşim kurmak için ana giriş noktasıdır. createPlugin API, IDrmPlugin örnekleri oluşturmak için kullanılır. 1.3 IDrmFactory, her zaman 1.0 createPlugin yöntemi aracılığıyla döndürülen 1.2 IDrmPlugin arabirimleri oluşturmalıdır.

Return<void> getSupportedCryptoSchemes(getSupportedCryptoSchemes_cb _hidl_cb);

1.3 IDrmFactory'de yeni olan getSupportedCryptoSchemes, HIDL drm HAL örneği için desteklenen şifreleme şemalarının bir listesini döndürür.

Return<bool> isCryptoSchemeSupported(const hidl_array<uint8_t, 16>uuid);

Eklenti fabrikasının, bir UUID tarafından belirtilen belirli bir şifreleme şemasını destekleyen DRM eklentileri oluşturup oluşturamayacağını belirler.

Return<bool> isContentTypeSupported(const hidl_string &mimeType);

Eklenti fabrikasının, mimeType tarafından belirtilen belirli bir ortam kapsayıcı biçimini destekleyen DRM eklentileri oluşturup oluşturamayacağını belirler.

Return<void> createPlugin(const hidl_array<uint8_t, 16>uuid,
        const hidl_string& appPackageName, createPlugin_cb _hidl_cb);

UUID tarafından belirtilen şifreleme şeması için bir DRM eklentisi oluşturur.

kripto fabrikası

CryptoHal sınıfı, kayıtlı DRM eklenti hizmetlerini arar ve CryptoFactory sınıfı aracılığıyla belirli bir şifreleme şemasını destekleyen ilgili eklentileri oluşturur.

Return<bool> isCryptoSchemeSupported(const hidl_array<uint8_t, 16>uuid);

Kripto fabrikasının, bir UUID tarafından belirtilen belirli bir şifreleme şemasını destekleyen kripto eklentileri oluşturup oluşturamayacağını belirler.

Return<void> createPlugin(const hidl_array<uint8_t, 16>uuid,
        const hidl_vec<uint8_t>initData, createPlugin_cb _hidl_cb)

Eklenti fabrikasının, bir UUID tarafından belirtilen belirli bir şifreleme şemasını destekleyen kripto eklentileri oluşturup oluşturamayacağını belirler.

DRM eklentisi

API'ler, hardware/interfaces/drm/ VERSION /IDrmPlugin.hal içinde tanımlanmıştır. Karşılık gelen IDrmPlugin.h dosyası, derlemeden sonra out/Soong'da bulunabilir. , Android DRM HAL simgesi

Bu belge, Android dijital haklar yönetimi (DRM) çerçevesine genel bir bakış sağlar ve bir DRM eklentisinin uygulaması gereken arabirimleri tanıtır. Bu belge, bir DRM şeması tarafından tanımlanabilecek sağlamlık kurallarını veya uyumluluk kurallarını açıklamamaktadır.

Çerçeve

Android platformu, uygulamaların, içerikle ilişkili lisans kısıtlamalarına göre hakları korunan içeriği yönetmesine olanak tanıyan genişletilebilir bir DRM çerçevesi sağlar. DRM çerçevesi birçok DRM şemasını destekler; bir cihazın desteklediği DRM şemaları cihaz üreticisine bağlıdır. DRM çerçevesi, uygulama geliştiricileri için birleşik bir arayüz sağlar ve DRM işlemlerinin karmaşıklığını gizler. DRM çerçevesi, korumalı ve korumasız içerik için tutarlı bir çalışma modu sağlar. DRM şemaları, lisans meta verilerine göre karmaşık kullanım modellerini tanımlayabilir. DRM çerçevesi, DRM içeriği ile lisans arasındaki ilişkiyi sağlar ve hak yönetimini yönetir. Bu, medya oynatıcının DRM korumalı veya korumasız içerikten soyutlanmasını sağlar. Korumalı medya akışlarının şifresini çözmek için anahtarları elde etmek için sınıf için MediaDrm'e bakın.

Android DRM HAL'ı
Şekil 1a. Android 11'den önceki DRM donanım soyutlama Katmanı
Android DRM HAL sonrası R
Şekil 1b. Android 11'de başlayan DRM donanım soyutlama Katmanı

Zengin dijital içeriğin kullanılabilirliği, mobil cihazlardaki kullanıcılar için önemlidir. Android geliştiricileri ve dijital içerik yayıncıları, içeriklerini geniş çapta kullanılabilir hale getirmek için Android ekosisteminde desteklenen tutarlı bir DRM uygulamasına ihtiyaç duyar. Bu dijital içeriği Android cihazlarda kullanılabilir hale getirmek ve tüm cihazlarda kullanılabilen en az bir tutarlı DRM olduğundan emin olmak için Google, uyumlu Android cihazlarda DRM'yi lisans ücreti olmadan sağlar. DRM eklentisi, Android DRM çerçevesiyle entegredir ve premium içeriği ve kullanıcı kimlik bilgilerini güvence altına almak için donanım destekli koruma kullanabilir.

DRM eklentisi tarafından sağlanan içerik koruması, temel alınan donanım platformunun güvenlik ve içerik koruma özelliklerine bağlıdır. Cihazın donanım yetenekleri, bir güvenlik güven zinciri oluşturmak ve kriptografik anahtarların korunmasını sağlamak için donanım güvenli önyüklemeyi içermelidir. Cihazın içerik koruma yetenekleri, cihazdaki şifresi çözülen çerçevelerin korunmasını ve güvenilir bir çıktı koruma mekanizması aracılığıyla içerik korumasını içermelidir. Tüm donanım platformları, yukarıdaki güvenlik ve içerik koruma özelliklerinin tümünü desteklemez. Güvenlik hiçbir zaman yığında tek bir yerde uygulanmaz, bunun yerine donanım, yazılım ve hizmetlerin entegrasyonuna dayanır. Donanım güvenlik işlevlerinin, güvenilir bir önyükleme mekanizmasının ve güvenlik işlevlerinin ele alınması için yalıtılmış bir güvenli işletim sisteminin birleşimi, güvenli bir aygıt sağlamak için kritik öneme sahiptir.

Mimari

DRM çerçevesi, uygulamadan bağımsız olacak şekilde tasarlanmıştır ve şemaya özel bir DRM eklentisinde belirli DRM şeması uygulamasının ayrıntılarını özetler. DRM çerçevesi, karmaşık DRM işlemlerini yürütmek, lisansları almak, cihazı sağlamak, DRM içeriğini ve lisansını ilişkilendirmek ve son olarak DRM içeriğinin şifresini çözmek için basit API'ler içerir.

Android DRM çerçevesi iki mimari katmanda uygulanmaktadır:

  • Android uygulama çerçevesi aracılığıyla uygulamalara maruz kalan bir DRM çerçevesi API'si.
  • Çeşitli DRM şemaları için hak yönetimi ve şifre çözmeyi işlemek üzere DRM eklentileri (aracılar) için bir arabirim sunan yerel bir kod DRM çerçevesi.
Android DRM Çerçevesi
Şekil 2a. Android 11'den önceki DRM çerçevesi
Android DRM Çerçevesi
Şekil 2b. Android 11'de başlayan DRM çerçevesi

Daha fazla ayrıntı için Android Media DRM ve Android Media Crypto'ya bakın.

DRM Eklentileri

Sistem başlangıcında, DRM çerçevesi HAL örneklerini/hizmetlerini ( .rc dosyalarında açıklanmıştır) tarar ve eklentiler HIDL kayıt defteri aracılığıyla keşfedilir. Media DRM Sunucusu ( mediadrmserver ) hem CryptoHal hem de DrmHal nesneleri oluşturur. CryptoHal ve DrmHal daha sonra satıcıya özel uygulamalarla eklentileri çağırır.

Eklentiler, ciltlenmiş HAL'leri uygulamalıdır. Bağlanmış HAL'ler, HAL'leri yeniden oluşturmaya gerek kalmadan çerçevenin değiştirilmesine izin veren HAL arabirim tanımlama dilini (HIDL) kullanır.

Eklentiler, satıcılar veya SOC üreticileri tarafından oluşturulur ve cihazda bir /vendor bölümüne yerleştirilir. Android 8.0 veya üzeri ile başlatılan tüm cihazlar, HIDL dilinde yazılmış ciltlenmiş HAL'leri desteklemelidir.

uygulama

Bir eklenti tarafından yeni DRM çerçeveleri API'lerini uygulamak için:

  1. Cihazın derleme dosyalarına eklenti hizmeti ekleyin.
  2. Aygıt bildirimini güncelleyin.
  3. SELinux izinleri ekleyin.
  4. /vendor altında bir .rc dosyası oluşturun.
  5. Eklentiyi uygulayın.

API'ler, IDrmPlugin.hal , ICryptoPlugin.hal , IDrmFactory.hal ve ICryptoFactory.hal her bir sürümünde tanımlanmıştır.

PLATFORM_ROOT/hardware/interfaces/drm/VERSION/

Cihaz derleme dosyalarına eklenti hizmeti ekleme

Örneğin, arayüz 1.3 desteği eklemek için VENDOR DEVICE /device.mk dosyası android.hardware.drm@1.3-service.* paketlerini içermelidir:

1.0 ila 1.2 sürümleri R / Android 11'de kullanımdan kaldırılmıştır. R'ye yükseltme yapan cihazların 1.0 ila 1.2 sürümlerini çalıştırmalarına hala izin verilir. Ancak, R ile başlatılan yeni cihazlar yalnızca 1.3 sürümünü çalıştırmalıdır.


  PRODUCT_PACKAGES += \
    android.hardware.drm@1.0-impl \
    android.hardware.drm@1.0-service \
    android.hardware.drm@1.3-service.clearkey \
    android.hardware.drm@1.3-service.widevine

Cihaz bildirimini güncelleme

Aygıtın vendor manifest.xml dosyası aşağıdaki girişleri içermelidir:


  <hal format="hidl">
    <name>android.hardware.drm</name>
      <transport>hwbinder</transport>
      <fqname>@1.3::ICryptoFactory/clearkey</fqname>
      <fqname>@1.3::IDrmFactory/clearkey</fqname>
      <fqname>@1.3::ICryptoFactory/widevine</fqname>
      <fqname>@1.3::IDrmFactory/widevine</fqname>
  </hal>

Alternatif olarak, vintf_fragments kullanmanızı öneririz.

SELinux izinleri ekleme

  1. SATICI CİHAZINA ekle VENDOR DEVICE /sepolicy/vendor/file.te
    type mediadrm_vendor_data_file, file_type, data_file_type;
  2. SATICI CİHAZINA ekle VENDOR DEVICE /sepolicy/vendor/file_contexts

    Yeni sürümler için güncelleme yapmaktan kaçınmak için sürüm numaralarını belirtmek için normal ifadeler kullanmanızı öneririz, örneğin:

    /vendor/bin/hw/android\.hardware\.drm@\[0-9]+\.[0-9]+-service\.clearkey
          u:object_r:hal_drm_clearkey_exec:s0
    /data/vendor/mediadrm(/.*)? u:object_r:mediadrm_vendor_data_file:s0

    Alternatif olarak, sürüm numaralarını aşağıda gösterildiği gibi güncelleyin.

    /vendor/bin/hw/android\.hardware\.drm@1\.3-service\.clearkey
          u:object_r:hal_drm_clearkey_exec:s0
    /data/vendor/mediadrm(/.*)? u:object_r:mediadrm_vendor_data_file:s0
  3. device/sepolicy/vendor/hal_drm_clearkey.te
    allow hal_drm_clearkey mediadrm_vendor_data_file:dir create_dir_perms;
        allow hal_drm_clearkey mediadrm_vendor_data_file:file create_file_perms;
        

/vendor altında bir .rc dosyası oluşturma

.rc dosyası, bir hizmet başlatıldığında yapılacak işlemleri belirtir.

Ayrıntılar için Android Init Dili'ne bakın.

Eklentiyi uygulama

  1. Eklenti hizmetinin service.cpp main() giriş noktasını uygulayın.
  2. ICryptoPlugin , IDrmPlugin , ICryptoFactory ve IDrmFactory .
  3. Eklentideki yeni API'leri uygulayın.

DRM eklentisi ayrıntıları

DRM eklentisi satıcıları DrmFactory , CryptoFactory ve DRM eklentisini uygular.

DrmFabrika

DrmHal sınıfı, kayıtlı DRM eklenti hizmetlerini arar ve DrmFactory sınıfı aracılığıyla belirli bir şifreleme şemasını destekleyen ilgili eklentileri oluşturur.

IDrmFactory, bir satıcının drm HAL'i ile createPlugin API aracılığıyla etkileşim kurmak için ana giriş noktasıdır. createPlugin API, IDrmPlugin örnekleri oluşturmak için kullanılır. 1.3 IDrmFactory, her zaman 1.0 createPlugin yöntemi aracılığıyla döndürülen 1.2 IDrmPlugin arabirimleri oluşturmalıdır.

Return<void> getSupportedCryptoSchemes(getSupportedCryptoSchemes_cb _hidl_cb);

1.3 IDrmFactory'de yeni olan getSupportedCryptoSchemes, HIDL drm HAL örneği için desteklenen şifreleme şemalarının bir listesini döndürür.

Return<bool> isCryptoSchemeSupported(const hidl_array<uint8_t, 16>uuid);

Eklenti fabrikasının, bir UUID tarafından belirtilen belirli bir şifreleme şemasını destekleyen DRM eklentileri oluşturup oluşturamayacağını belirler.

Return<bool> isContentTypeSupported(const hidl_string &mimeType);

Eklenti fabrikasının, mimeType tarafından belirtilen belirli bir ortam kapsayıcı biçimini destekleyen DRM eklentileri oluşturup oluşturamayacağını belirler.

Return<void> createPlugin(const hidl_array<uint8_t, 16>uuid,
        const hidl_string& appPackageName, createPlugin_cb _hidl_cb);

UUID tarafından belirtilen şifreleme şeması için bir DRM eklentisi oluşturur.

kripto fabrikası

CryptoHal sınıfı, kayıtlı DRM eklenti hizmetlerini arar ve CryptoFactory sınıfı aracılığıyla belirli bir şifreleme şemasını destekleyen ilgili eklentileri oluşturur.

Return<bool> isCryptoSchemeSupported(const hidl_array<uint8_t, 16>uuid);

Kripto fabrikasının, bir UUID tarafından belirtilen belirli bir şifreleme şemasını destekleyen kripto eklentileri oluşturup oluşturamayacağını belirler.

Return<void> createPlugin(const hidl_array<uint8_t, 16>uuid,
        const hidl_vec<uint8_t>initData, createPlugin_cb _hidl_cb)

Eklenti fabrikasının, bir UUID tarafından belirtilen belirli bir şifreleme şemasını destekleyen kripto eklentileri oluşturup oluşturamayacağını belirler.

DRM eklentisi

API'ler, hardware/interfaces/drm/ VERSION /IDrmPlugin.hal içinde tanımlanmıştır. Karşılık gelen IDrmPlugin.h dosyası, derlemeden sonra out/Soong'da bulunabilir.