Freigeben über


JET_USERDEFINEDDEFAULT-Struktur

Letzte Änderung: Freitag, 27. Februar 2015

Gilt für: Windows | Windows Server

JET_USERDEFINEDDEFAULT-Struktur

Die JET_USERDEFINEDDEFAULT -Struktur wird in Verbindung mit JET_bitColumnUserDefinedDefault, um einer neuen Spalte einen Standardwert zugewiesen, der mithilfe eines Rückrufs bestimmt wird angegeben. Dieses Verfahren kann verwendet werden, um berechnete Spalten zu implementieren.

**Windows XP:**Die JET_USERDEFINEDDEFAULT -Struktur ist in Windows XP eingeführt.

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

Mitglieder

szCallback

Der Name der Funktion, die den Rückruf im implementiert des Exports "Modul!-Funktion" Format.

Der Rückruf bleibt als Teil der Spalten-Schemainformationen. Um bei der Suche die tatsächlichen Adressen der Funktion zur Laufzeit zu ermöglichen, muss der tatsächliche ausführbare Datei und Export Hostname der Funktion beibehalten.

Der Modulname ist der Name der Host-Binärdatei, die die Funktion enthält. Der Name der Funktion ist für diese Funktion den Namen des Exports. Diese beiden Informationswerte werden vom Datenbankmodul zur Laufzeit verwendet werden, um die tatsächlichen Adressen des Rückrufs zu finden, durch einen Aufruf von LoadLibrary nach dem Modulnamen, gefolgt von einem Aufruf von GetProcAddress auf den Namen der Funktion ausführen.

Z. B. wenn der Rückruf, in eine DLL namens MyCallback.DLL und implementiert wurden die DLL in C:\MyApplication gespeichert wurden und die Funktion, die den Rückruf implementieren aus der DLL als UserDefinedDefaultCallback exportiert wurden, wäre dann erforderliche String-Wert "C:\MyApplication\MyCallback.DLL!UserDefinedDefaultCallback".

Hinweis  Eingebettete "!" im Modulteil der Rückruf Name Zeichen werden nicht unterstützt.

Es wird dringend empfohlen, dass Sie einen Rückruf-Namen verwenden, der keine Funktion für die Host-Architektur ist. Verwenden Sie z. B. keine Exporte als Stdcall (UserDefinedDefaultCallback@32) eingerichtet werden, da diese Aufrufkonvention nur auf X 86 unterstützt wird Maschinen. Wenn diese ein Rückruf verwendet wurden, und dann die Datenbank nur auf X 86-Computern verwendet werden kann. Ein Alias sollte verwendet werden, in diesem Fall einen plattformunabhängiger Export vornehmen.

Es wird dringend empfohlen, dass Sie den vollständigen Pfad des Modulnamens verwenden, die den Rückruf implementiert. Ein relativer Pfad verwendet wird, kann der Prozess, der die Datenbank hostet anfällig für einen Angriff durch einen Rogue-Binärdatei sein.

Die Anwendung sollte nur vertrauenswürdigen Rückrufe an das Datenbankmodul übergeben. Die Datenbank-Engine wird geladen, die Binärdatei, um sein Vorhandensein zu überprüfen, wenn die zugeordnete Spalte erstellt wird. Wenn Sie der Pfad zur Binärdatei nicht überprüft oder vertrauenswürdig bekannt kann es den Prozess angreifen, der die Datenbank hostet.

pbUserData

Einen eigenständigen Codeblock von benutzerdefinierten Daten an die Rückruffunktion beim Aufruf übergeben werden.Datenblock, das bereitgestellt wird, wird als Teil der Spalten-Schemainformationen beibehalten. Das Datenblock muss daher völlig in sich abgeschlossen und kann nicht auf alle Daten, die außerhalb des Bereichs der Datenbank verweisen.

Wenn PbUserData NULL ist, wird der Wert der CbUserData ignoriert. In diesem Fall werden keine benutzerdefinierten Daten für den Rückruf beim Aufruf übergeben werden.

cbUserData

Finden Sie unter PbUserData.

szDependantColumns

Für die zukünftige Verwendung reserviert.

Dieser Member sollte immer auf NULL festgelegt werden.

Voraussetzungen

-Client,

Erfordert Windows Vista, Windows XP oder Windows 2000 Professional.

Server

Erfordert WindowsServer 2008, WindowsServer 2003 oder Windows 2000 Server.

Kopfzeile

In Esent.h deklariert.

Unicode

Implementiert als JET_ USERDEFINEDDEFAULT_W (Unicode) und JET_ USERDEFINEDDEFAULT_A (ANSI).

Siehe auch

JET_CBTYP
JET_COLUMNCREATE
JET_COLUMNDEF