Bagikan melalui


Struktur StorageLayout (objidl.h)

Struktur StorageLayout menjelaskan satu blok data, termasuk namanya, lokasi, dan panjangnya. Untuk mengoptimalkan file campuran, aplikasi atau alat tata letak meneruskan array struktur StorageLayout dalam panggilan ke ILayoutStorage::LayoutScript.

Sintaks

typedef struct tagStorageLayout {
  DWORD         LayoutType;
  OLECHAR       *pwcsElementName;
  LARGE_INTEGER cOffset;
  LARGE_INTEGER cBytes;
} StorageLayout;

Anggota

LayoutType

Jenis elemen yang akan ditulis. Nilai diambil dari enumerasi STGTY . STGTY_STREAM berarti membaca blok data yang dinamai oleh pwcsElementName. STGTY_STORAGE berarti membuka penyimpanan yang ditentukan dalam pwcsElementName. STGTY_REPEAT digunakan dalam aplikasi multimedia untuk antarmuka audio, video, teks, dan elemen lainnya. Nilai STGTY_REPEAT pembuka berarti bahwa elemen yang mengikuti akan diulangi beberapa kali. Nilai STGTY_REPEAT penutup menandai akhir elemen yang akan diulang. Pasangan nilai STGTY_REPEAT berlapis diizinkan.

pwcsElementName

Nama string Unicode yang dihentikan null dari penyimpanan atau aliran. Jika elemen adalah substorase atau objek yang disematkan, jalur penyimpanan yang sepenuhnya memenuhi syarat harus ditentukan; misalnya, "RootStorageName\SubStorageName\Substream".

cOffset

Di mana nilai anggota LayoutTypeSTGTY_STREAM, bendera ini menentukan offset awal ke dalam uap bernama di anggota pwscElementName .

Di mana LayoutTypeSTGTY_STORAGE, bendera ini harus diatur ke nol.

Di mana LayoutTypeSTGTY_REPEAT, bendera ini harus diatur ke nol.

cBytes

Panjang, dalam byte, dari blok data bernama di pwcsElementName.

Di mana LayoutTypeSTGTY_STREAM, cBytes menentukan jumlah byte yang akan dibaca di cOffset dari aliran bernama di pwcsElementName.

Di mana LayoutTypeSTGTY_STORAGE, bendera ini diabaikan.

Di mana LayoutTypeSTGTY_REPEAT, cByte positif menentukan awal blok berulang. STGTY_REPEAT dengan nol cBytes menandai akhir blok berulang.

Nilai blok awal STG_TOEND menentukan bahwa elemen dalam blok berikut akan diulang setelah setiap aliran dibaca sepenuhnya.

Keterangan

Array struktur StorageLayout mungkin muncul sebagai berikut.

StorageLayout arrScript[]=
    // Read first 2k of "WordDocument" stream
    {STGTY_STREAM,L"WordDocument",{0,0},{0,2048}},
 
    //Test if "ObjectPool\88112233" storage exists
    {STGTY_STORAGE,L"ObjectPool\\88112233",{0,0},{0,0}},
 
    //Read 2k at offset 1048 of "WordDocument" stream
    {STGTY_STREAM,L"WordDocument",{0,10480},{0,2048}},
 
    //Interlace "Audio", "Video", and "Caption" streams
    {STGTY_REPEAT,NULL,0,STG_TOEND},
        {STGTY_STREAM,L"Audio", {0,0},{0,2048}},    // 2k of Audio
        {STGTY_STREAM,L"Video", {0,0},{0,65536}},   // 64k of Video
        {STGTY_STREAM,L"Caption", {0,0},{0,128}},   // 128b of text
    {STGTY_REPEAT,NULL, {0,0},{0,0}}
};
Catatan Parameter cOffset dan cBytesadalah struktur LARGE_INTEGER , digunakan untuk mewakili nilai bilangan bulat bertanda tangan 64-bit sebagai persatuan dua anggota 32-bit. Dua anggota 32-bit harus direpresentasikan sebagai struktur LARGE_INTEGER dengan DWORD LowPart dan LONG HighPart sebagai anggota struktur. (LowPart menentukan 32 bit urutan rendah dan HighPart menentukan urutan tinggi 32 bit.) Jika kompilator Anda memiliki dukungan bawaan untuk bilangan bulat 64-bit, gunakan anggota QuadPart dari struktur LARGE_INTEGER untuk menyimpan bilangan bulat 64-bit.
 

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows 2000 Server [aplikasi desktop | Aplikasi UWP]
Header objidl.h

Lihat juga

ILayoutStorage::LayoutScript