Bagikan melalui


Enumerasi MSHLFLAGS (wtypesbase.h)

Menentukan mengapa marshaling harus dilakukan.

Sintaks

typedef enum tagMSHLFLAGS {
  MSHLFLAGS_NORMAL = 0,
  MSHLFLAGS_TABLESTRONG = 1,
  MSHLFLAGS_TABLEWEAK = 2,
  MSHLFLAGS_NOPING = 4,
  MSHLFLAGS_RESERVED1 = 8,
  MSHLFLAGS_RESERVED2 = 16,
  MSHLFLAGS_RESERVED3 = 32,
  MSHLFLAGS_RESERVED4 = 64
} MSHLFLAGS;

Konstanta

 
MSHLFLAGS_NORMAL
Nilai: 0
Marshaling terjadi karena pointer antarmuka sedang diteruskan dari satu proses ke proses lainnya. Ini adalah kasus normal. Paket data yang dihasilkan oleh proses marshaling akan tidak terpecahkan dalam proses tujuan. Paket data marshaled dapat dibatalkan napasnya hanya sekali, atau tidak sama sekali. Jika penerima berhasil membatalkan nama paket data, fungsi CoReleaseMarshalData secara otomatis dipanggil pada paket data sebagai bagian dari proses yang belum dialihkan. Jika penerima tidak atau tidak dapat membatalkan nama paket data, pengirim harus memanggil CoReleaseMarshalData pada paket data.
MSHLFLAGS_TABLESTRONG
Nilai: 1
Marshaling terjadi karena paket data akan disimpan dalam tabel yang dapat diakses secara global dari mana ia dapat dibatalkan napasnya satu atau beberapa kali, atau tidak sama sekali. Kehadiran paket data dalam tabel dihitung sebagai referensi yang kuat untuk antarmuka yang di-marshal, yang berarti bahwa cukup untuk menjaga objek tetap hidup. Ketika paket data dihapus dari tabel, pelaksana tabel harus memanggil fungsi CoReleaseMarshalData pada paket data.

MSHLFLAGS_TABLESTRONG digunakan oleh fungsi RegisterDragDrop saat mendaftarkan jendela sebagai target penurunan. Ini membuat jendela tetap terdaftar sebagai target penurunan tidak peduli berapa kali pengguna akhir menyeret ke seluruh jendela. Fungsi RevokeDragDrop memanggil CoReleaseMarshalData.
MSHLFLAGS_TABLEWEAK
Nilai: 2
Marshaling terjadi karena paket data akan disimpan dalam tabel yang dapat diakses secara global dari mana ia dapat dibatalkan napasnya satu atau beberapa kali, atau tidak sama sekali. Namun, keberadaan paket data dalam tabel bertindak sebagai referensi lemah ke antarmuka yang di-marshal, yang berarti bahwa tidak cukup untuk menjaga objek tetap hidup. Ketika paket data dihapus dari tabel, pelaksana tabel harus memanggil fungsi CoReleaseMarshalData pada paket data.

MSHLFLAGS_TABLEWEAK biasanya digunakan saat mendaftarkan objek dalam tabel objek yang sedang berjalan (ROT). Ini mencegah entri objek dalam ROT menjaga objek tetap hidup tanpa adanya koneksi lain. Lihat IRunningObjectTable::Register untuk informasi selengkapnya.
MSHLFLAGS_NOPING
Nilai: 4
Menambahkan bendera ini ke marshaling objek asli (dibandingkan dengan marshaling proksi) akan menonaktifkan protokol ping untuk objek tersebut.
MSHLFLAGS_RESERVED1
Nilai: 8
MSHLFLAGS_RESERVED2
Nilai: 16
MSHLFLAGS_RESERVED3
Nilai: 32
MSHLFLAGS_RESERVED4
Nilai: 64

Persyaratan

   
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Header wtypesbase.h (termasuk WTypes.h)

Lihat juga

CoGetStandardMarshal

CoMarshalInterface

ICallFrame

IMarshal