середа, 22 серпня 2012 р.

XenData SDK своїми руками

    При розробці одного проекту я зіткнувся з необхідністю інтерації з ПО XenData, для реалізації необхідних мені можливостей можно було використати SDK від XenData, но мені було цікаво розібратися, як працює дане ПО, тому було прийнято написати свій псевдо SDK для ПО XenData.

Для початку потрібно розібратися де зберігаються метадані для файлів, так як ПО XenData не використовуе БД то більш всього метадані зберігаються на динамічному диску, який зарезервований за ПО XenData. Запустивши моніторинг файлової системи було виявлено скритий каталог де зберігаються метадані файлів.

Динамічний диск XD:\$XenDataCache\

наприклад в нас диск E:\ зарезервований за ПО XenData, ми в теку TEST записали файл 1.avi то метадані до даного фалу будуть зберігатися в E:\$XenDataCache\TEST\1.avi$

рис. 1. Структура файлу метаданих


В файлі метаданих зберігається наступна інформація, розмір файлу, дата створення, дата модифікації, дата останнього доступу до файлу, версії файлів, атрибути файлу, місце знаходження на плівці...

Після декількох днів вдалося на 70% розібратися з структурою метаданих.

Type
  TXDVolume = packed record
    n1              : cardinal;   // inttohex(XDFileVersion[i].XDVolume.n1,8)
    n2              : cardinal;
    n3              : cardinal;
    blocknumber     : int64;
  end;

Type
  TXDFileVersion = packed record
     none1           : array[0..15] of byte;
     ModifietFile    : _filetime;
     filesize        : int64;
     none2           : cardinal;
     XDVolume        : TXDVolume;
  end;



Type
  TXDFile =  record
    header          : cardinal;
    none            : array[0..11] of byte;
    size            : cardinal;
    none1           : cardinal;
    arrtibute       : cardinal;
    none2           : cardinal;
    filegeneration  : cardinal;
    fileversionnum  : cardinal;
    none3           : array[0..15] of byte;
    filesize        : int64;
    filesize1       : int64;
    //none 48
    createfile      : _Filetime;
    lastaccess      : _filetime;
    ModifietFile    : _filetime;
    none4           : array[0..15] of byte;
    XDFileVersion   : array of TXDFileVersion
  end;

Після розроки модуля xdapi.pas була написана тестова програма для читання метаданих ПО XenData


Stand:
1) Windows Server 2008 R2
2) XenData 6

Links:
1) XenData digital video archive solutions manage LTO tape drives and LTO tape libraries. They are well proven in the media and entertainment industry - with tape library installations in over 50 countries worldwide - ranging from post production organizations to local TV stations to major global broadcasters and major service providers.