Struktur JET_USERDEFINEDDEFAULT

Berlaku untuk: Windows | Windows Server

Struktur JET_USERDEFINEDDEFAULT

Struktur JET_USERDEFINEDDEFAULT ditentukan bersama dengan JET_bitColumnUserDefinedDefault untuk memberi kolom baru nilai default yang ditentukan menggunakan panggilan balik. Teknik ini dapat digunakan untuk mengimplementasikan kolom komputasi.

Windows XP: Struktur JET_USERDEFINEDDEFAULT diperkenalkan di Windows XP.

    typedef struct tag_JET_USERDEFINEDDEFAULT {
      tchar* szCallback;
      unsigned char* pbUserData;
      unsigned long cbUserData;
      tchar* szDependantColumns;
    } JET_USERDEFINEDDEFAULT;

Anggota

szCallback

Nama ekspor fungsi yang mengimplementasikan panggilan balik dalam format "module!function".

Panggilan balik tetap ada sebagai bagian dari skema kolom. Nama host executable dan ekspor aktual dari fungsi harus bertahan untuk mengaktifkan pencarian alamat sebenarnya dari fungsi pada durasi.

Nama modul adalah nama biner host yang berisi fungsi . Nama fungsi adalah nama ekspor untuk fungsi tersebut. Kedua informasi ini akan digunakan oleh mesin database pada runtime untuk menemukan alamat panggilan balik yang sebenarnya dengan menjalankan panggilan LoadLibrary pada nama modul diikuti oleh panggilan GetProcAddress pada nama fungsi.

Misalnya, jika panggilan balik diimplementasikan dalam DLL yang disebut MyCallback.DLL dan DLL tersebut disimpan di C:\MyApplication dan fungsi yang mengimplementasikan panggilan balik diekspor dari DLL sebagai UserDefinedDefaultCallback, maka string yang diperlukan adalah "C:\MyApplication\MyCallback.DLL! UserDefinedDefaultCallback".

Catatan Karakter "!" yang disematkan di bagian modul nama panggilan balik tidak didukung.

Sangat disarankan agar Anda menggunakan nama panggilan balik yang bukan fungsi arsitektur host. Misalnya, jangan gunakan ekspor yang dihiasi sebagai stdcall (UserDefinedDefaultCallback@32) karena konvensi panggilan ini hanya didukung pada mesin x86. Jika panggilan balik seperti itu digunakan, database hanya dapat digunakan pada komputer x86. Alias harus digunakan untuk membuat ekspor platform-agnostik dalam hal ini.

Sangat disarankan agar Anda menggunakan jalur lengkap nama modul yang mengimplementasikan panggilan balik. Jika jalur relatif digunakan maka proses yang menghosting database mungkin rentan terhadap serangan biner nakal.

Aplikasi hanya boleh meneruskan panggilan balik tepercaya ke mesin database. Mesin database akan memuat biner untuk memverifikasi keberadaannya saat kolom terkait dibuat. Jika jalur ke biner tidak divalidasi atau diketahui tepercaya maka itu dapat menyerang proses yang menghosting database.

pbUserData

Blok mandiri data yang ditentukan pengguna untuk diteruskan ke panggilan balik saat dipanggil. Blok data yang disediakan akan bertahan sebagai bagian dari skema kolom. Akibatnya, blok data harus sepenuhnya mandiri dan tidak dapat merujuk ke data apa pun yang berada di luar lingkup database.

Jika pbUserData adalah nol, maka nilai cbUserData diabaikan. Dalam hal ini, tidak ada data yang ditentukan pengguna yang akan diteruskan ke panggilan balik saat dipanggil.

cbUserData

Lihat pbUserData.

szDependantColumns

Disiapkan untuk penggunaan masa mendatang.

Anggota ini harus selalu diatur ke NULL.

Persyaratan

Persyaratan Nilai

Klien

Memerlukan Windows Vista, Windows XP, atau Windows 2000 Professional.

Server

Memerlukan Windows Server 2008, Windows Server 2003, atau Windows 2000 Server.

Header

Dinyatakan dalam Esent.h.

Unicode

Diimplementasikan sebagai JET_ USERDEFINEDDEFAULT_W (Unicode) dan JET_ USERDEFINEDDEFAULT_A (ANSI).

Lihat juga

JET_CBTYP
JET_COLUMNCREATE
JET_COLUMNDEF