JetOpenFileInstance-Funktion

Gilt für: Windows | Windows Server

JetOpenFileInstance-Funktion

Die JetOpenFileInstance-Funktion öffnet eine angefügte Datenbank, Datenbankpatchdatei oder Transaktionsprotokolldatei eines aktiven instance, um eine Streamingfuzzysicherung durchzuführen. Die Daten aus diesen Dateien können anschließend mithilfe von JetReadFileInstance durch das zurückgegebene Handle gelesen werden. Das zurückgegebene Handle muss mit JetCloseFileInstance geschlossen werden. Eine externe Sicherung der instance muss zuvor mithilfe von JetBeginExternalBackupInstance initiiert worden sein.

Windows XP:JetOpenFileInstance wird in Windows XP eingeführt.

    JET_ERR JET_API JetOpenFileInstance(
      __in          JET_INSTANCE instance,
      __in          JET_PCSTR szFileName,
      __out         JET_HANDLE* phfFile,
      __out         unsigned long* pulFileSizeLow,
      __out         unsigned long* pulFileSizeHigh
    );

Parameter

instance

Die für diesen Aufruf zu verwendende instance.

Für Windows 2000 ist die API-Variante, die diesen Parameter akzeptiert, nicht verfügbar, da nur eine instance unterstützt wird. Die Verwendung dieses globalen instance ist in diesem Fall impliziert.

Bei Windows XP und höheren Versionen kann die API-Variante, die diesen Parameter nicht akzeptiert, nur aufgerufen werden, wenn sich das Modul im Legacymodus (Windows 2000-Kompatibilitätsmodus) befindet, in dem nur eine instance unterstützt wird. Andernfalls schlägt der Vorgang mit JET_errRunningInMultiInstanceMode fehl.

szFileName

Der relative oder absolute Pfad zu einer angefügten Datenbank, Datenbankpatchdatei oder Transaktionsprotokolldatei, die vom instance verwaltet wird und für die Sicherung gelesen wird.

phfFile

Zeiger auf den Ausgabepuffer, der ein Handle auf die zu lesende Datei empfängt.

pulFileSizeLow

Zeiger auf den Ausgabepuffer, der die geringsten 32 Bits der Dateigröße empfängt.

pulFileSizeHigh

Zeiger auf den Ausgabepuffer, der die wichtigsten 32 Bits der Dateigröße empfängt.

Rückgabewert

Diese Funktion gibt den JET_ERR-Datentyp mit einem der folgenden Rückgabecodes zurück. Weitere Informationen zu möglichen ESE-Fehlern finden Sie unter Erweiterbare Speichermodulfehler und Fehlerbehandlungsparameter.

Rückgabecode

Beschreibung

JET_errSuccess

Der Vorgang wurde erfolgreich abgeschlossen.

JET_errBackupAbortByServer

Der Vorgang ist fehlgeschlagen, da die aktuelle externe Sicherung durch einen Aufruf von JetStopBackupInstance abgebrochen wurde. Dieser Fehler wird nur von Windows XP und höheren Versionen zurückgegeben.

JET_errClientRequestToStopJetService

Es ist nicht möglich, den Vorgang abzuschließen, da alle Aktivitäten auf dem instance, die der Sitzung zugeordnet sind, aufgrund eines Aufrufs von JetStopServiceInstance beendet wurden.

JET_errFileAccessDenied

Der Vorgang ist fehlgeschlagen, da die angeforderte Datei aufgrund einer Freigabeverletzung oder unzureichender Berechtigungen nicht geöffnet werden konnte.

JET_errFileNotFound

Der Vorgang ist fehlgeschlagen, da die angeforderte Datei nicht geöffnet werden konnte, da sie im angegebenen Pfad nicht gefunden werden konnte. Dieser Fehler wird nur von Windows 2000 zurückgegeben.

JET_errInvalidBackupSequence

Fehler beim Sicherungsvorgang, weil er außerhalb der Sequenz aufgerufen wurde.

JET_errInvalidPath

Fehler beim Vorgang, weil der angegebene Pfad nicht gefunden werden konnte.

JET_errInstanceUnavailable

Es ist nicht möglich, den Vorgang abzuschließen, da beim instance, der der Sitzung zugeordnet ist, ein schwerwiegender Fehler aufgetreten ist, der erfordert, dass der Zugriff auf alle Daten widerrufen wird, um die Integrität dieser Daten zu schützen. Dieser Fehler wird nur von Windows XP und höheren Versionen zurückgegeben.

JET_errInvalidParameter

Einer der bereitgestellten Parameter enthielt einen unerwarteten Wert oder einen Wert, der in Kombination mit dem Wert eines anderen Parameters nicht sinnvoll war. Dies kann für JetOpenFileInstance in folgenden Fällen auftreten:

  • Das angegebene instance Handle ist ungültig (Windows XP und höhere Versionen).

  • Der angegebene Dateiname-Parameter ist NULL oder eine Zeichenfolge der Länge null (Windows XP und höhere Versionen).

JET_errMissingFileToBackup

Die angeforderte Datei konnte nicht zur Sicherung geöffnet werden, da sie nicht gefunden wurde. Dieser Fehler wird nur von Windows XP und höheren Versionen zurückgegeben.

JET_errNoBackup

Der Vorgang ist fehlgeschlagen, da keine externe Sicherung ausgeführt wird.

JET_errNotInitialized

Es ist nicht möglich, den Vorgang abzuschließen, da die der Sitzung zugeordnete instance noch nicht initialisiert wurde.

JET_errOutOfMemory

Der Vorgang ist fehlgeschlagen, da nicht genügend Arbeitsspeicher zugewiesen werden konnte, um ihn abzuschließen. JetOpenFileInstance gibt JET_errOutOfMemory zurück, wenn versucht wird, eine andere Datei zu öffnen, bevor die vorherige Mit JetOpenFileInstance geöffnete Datei von JetCloseFileInstance geschlossen wurde. Derzeit wird nur ein ausstehendes Dateihandle unterstützt.

JET_errRestoreInProgress

Es ist nicht möglich, den Vorgang abzuschließen, da auf dem der Sitzung zugeordneten instance ein Wiederherstellungsvorgang ausgeführt wird.

JET_errRunningInMultiInstanceMode

Der Vorgang ist fehlgeschlagen, weil versucht wurde, die Engine im Legacymodus (Windows 2000-Kompatibilitätsmodus) zu verwenden, in dem nur eine instance unterstützt wird, wenn bereits mehrere Instanzen vorhanden sind.

JET_errTermInProgress

Es ist nicht möglich, den Vorgang abzuschließen, da die der Sitzung zugeordnete instance heruntergefahren wird.

Bei Erfolg wird ein Handle für die angeforderte Datei zurückgegeben. Wenn das Handle für eine Datenbankdatei gilt, wird diese Datenbankdatei für eine Streamingsicherung vorbereitet, die zum Erstellen einer Datenbankpatchdatei am gleichen Speicherort wie die Datenbankdatei führen kann. Die Datenbankpatchdatei hat genau den gleichen Pfad und Dateinamen wie die Datenbankdatei, aber mit einem . PAT-Erweiterung. Die Größe der Datei wird ebenfalls zurückgegeben.

Bei einem Fehler ist der Zustand der Ausgabepuffer undefiniert. Eine Datenbankpatchdatei kann vorübergehend auf dem Datenträger erstellt werden, und jede vorhandene Datei am Speicherort der Patchdatei kann gelöscht werden. Der Fehler führt zum Abbruch des gesamten Sicherungsvorgangs für die instance. Unter Windows XP und höheren Versionen wird die Sicherung nicht abgebrochen, wenn versucht wurde, eine Datenbank zu sichern, die zum Zeitpunkt des Aufrufs nicht an den instance angefügt wurde.

Warnung Aus Sicherheitsgründen ist es wichtig zu beachten, dass JetOpenFileInstance nicht überprüft, ob der angeforderte Dateipfad dem Satz von Dateien zugeordnet ist, die für die instance gesichert werden. Daher ist es möglich, mit dieser Funktion auf jede Datei zuzugreifen, die vom aktuellen Sicherheitskontext des Threads geöffnet werden kann. Es ist zwingend erforderlich, dass die Anwendung die an diese Funktion übergebenen Pfade auf einen bekannten Satz guter Dateipfade beschränkt, oder es kann ein Informationsangriff ermöglicht werden.

Bemerkungen

Die Handle- und Dateigrößen-Ausgabepuffer müssen vorhanden sein. Wenn sie nicht vorhanden sind, stürzt das Modul ab, da die Ausgabepufferparameter nicht überprüft werden.

Derzeit kann nur eine Datei gleichzeitig für die Sicherung geöffnet werden.

JetOpenFileInstance gibt die Sicherungsberechtigung vor dem Öffnen der angeforderten Datei nicht an.

Die Von dieser Funktion gemeldete Größe der Datei, die gelesen werden soll, entspricht möglicherweise nicht der Größe der Datei auf dem Datenträger. Unter Windows XP und höheren Versionen können zusätzliche Informationen an eine Datenbankdatei angefügt werden, die von der Datenbank-Engine während eines Wiederherstellungsvorgangs verwendet wird. Daher sollte sich die Anwendung nur auf die von JetOpenFileInstance zurückgegebene Dateigröße oder auf die tatsächliche Anzahl der von JetReadFileInstance zurückgegebenen Datenbytes verlassen.

Anforderungen

Anforderung Wert

Client

Erfordert Windows Vista oder Windows XP.

Server

Erfordert Windows Server 2008 oder Windows Server 2003.

Kopfzeile

Deklariert in Esent.h.

Bibliothek

Verwenden Sie ESENT.lib.

DLL

Erfordert ESENT.dll.

Unicode

Implementiert als JetOpenFileInstanceW (Unicode) und JetOpenFileInstanceA (ANSI).

Weitere Informationen

JET_ERR
JET_HANDLE
JET_INSTANCE
JetAttachDatabase
JetBeginExternalBackupInstance
JetCloseFileInstance
JetGetAttachInfoInstance
JetGetLogInfoInstance
JetReadFileInstance
JetStopBackupInstance
JetTruncateLogInstance