Bagikan melalui


Berbagai Array

Di MIDL, berbagai array berukuran tetap. Mereka memungkinkan klien untuk meneruskan bagian array yang berbeda dari klien ke server. Ukuran bagian array dapat bervariasi dari pemanggilan hingga pemanggilan. Namun, ukuran array keseluruhan diperbaiki.

Misalnya, contoh berikut menunjukkan definisi prosedur jarak jauh dalam antarmuka dalam file MIDL. Ukuran array yang diteruskan klien ke server diperbaiki oleh konstanta ARRAY_SIZE. Antarmuka menentukan bagian array yang diteruskan klien ke server dalam parameter firstElement dan chunkSize.

[
    /*Attributes are defined here. */
]
interface MyInterface
{
    const long ARRAY_SIZE = 1000;

    MyRemoteProc(
        [in] long lFirstElement,
        [in] long lChunkSize,
        [in, first_is(lFirstElement), 
          length_is(lChunkSize)] char achArray[ARRAY_SIZE]
    );

    /* Other interface procedures are defined here. */
}

Definisi antarmuka menggunakan atribut MIDL [first_is] untuk menentukan jumlah indeks elemen pertama dalam bagian array yang diteruskan klien ke server. Atribut [length_is] menentukan jumlah total elemen array yang dilewati klien. Untuk informasi selengkapnya tentang atribut MIDL ini, lihat Atribut Array.

Fragmen kode berikut menggambarkan bagaimana klien mungkin memanggil prosedur jarak jauh yang ditentukan dalam file MIDL sebelumnya.

long lFirstArrayElementNumber = 20;
long lTotalElementsPassed = 100;
char achCharArray[ARRAY_SIZE];

// Code to store chars in the array goes here.

MyRemoteProc(
    lFirstArrayElementNumber ,
    lTotalElementsPassed , 
    achCharArray);

firstArrayElementNumber = 120;
totalElementsPassed = 200;

MyRemoteProc(
    lFirstArrayElementNumber ,
    lTotalElementsPassed , 
    achCharArray);

Fragmen ini memanggil prosedur jarak jauh MyRemoteProc dua kali. Pada pemanggilan pertama, ia melewati elemen array bernomor 20 hingga 119, seperti yang ditunjukkan oleh nilai dalam variabel firstArrayElementNumber dan totalElementsPassed. Pada panggilan kedua, klien melewati elemen array bernomor 120 hingga 319.