Freigeben über


OPLOCK_KEY_ECP_CONTEXT-Struktur (ntifs.h)

Die OPLOCK_KEY_ECP_CONTEXT-Struktur wird verwendet, um einen oplock-Schlüssel an eine Datei anzufügen. Diese Struktur ist für Windows 8 und höhere Versionen veraltet. Filter sollten stattdessen DUAL_OP_LOCK_KEY_ECP_CONTEXT verwenden.

Syntax

typedef struct _OPLOCK_KEY_ECP_CONTEXT {
  GUID  OplockKey;
  ULONG Reserved;
} OPLOCK_KEY_ECP_CONTEXT, *POPLOCK_KEY_ECP_CONTEXT;

Member

OplockKey

Eine GUID für den Oplock-Schlüssel. Diese GUID wird von verschiedenen Handles gemeinsam verwendet und identifiziert sie als gehören zum gleichen Clientcache. Wenn zwei Handles denselben Oplock-Schlüssel gemeinsam nutzen, wird eine Anforderung, die für ein Handle ausgeführt wird, keinen ausstehenden Oplock für das andere Handle unterbrechen.

Reserved

Reserviert. Muss auf 0 (null) festgelegt werden.

Hinweise

Informationen zur Verwendung von ECPs zum Zuordnen zusätzlicher Informationen zu einer Datei beim Erstellen der Datei finden Sie unter Verwenden zusätzlicher Erstellungsparameter mit einem IRP_MJ_CREATE Vorgang.

Ein Minifilter sollte den Inhalt der OPLOCK_KEY_ECP_CONTEXT-Struktur nicht ändern, wenn der ECP von oben nach unten kommt. Sie sollten es nur zum Abrufen von Informationen über den Oplock-Schlüssel-ECP verwenden. Weitere Informationen zu diesem Problem finden Sie unter Systemdefinierte ECPs.

Der oplock-Schlüssel ermöglicht es einer Anwendung, mehrere Handles für denselben Stream zu öffnen, ohne den eigenen Oplock der Anwendung zu unterbrechen. Die Oplockunterbrechung tritt erst auf, nachdem die Anwendung einen Freigabeverstoß (STATUS_SHARING_VIOLATION) erhält.

Oplocks werden für Streamhandles gewährt, wenn ein Stream geöffnet wird. Ein solches Datenstromhandle kann einem oplock-Schlüssel zugeordnet werden. Ein Aufrufer kann den oplock-Schlüssel explizit für die IoCreateFileEx-Routine bereitstellen, um das Streamhandle zu erstellen. Wenn der Aufrufer beim Erstellen des Handles vom Aufrufer nicht explizit einen Oplock-Schlüssel angibt, behandelt das Betriebssystem das Handle so, als ob dem Handle ein eindeutiger Oplockschlüssel zugeordnet ist, sodass sich der Schlüssel des Handles von jedem anderen Schlüssel auf jedem anderen Handle unterscheidet. Wenn ein Dateivorgang für ein anderes Handle als das empfangen wird, für das der Oplock gewährt wurde, und der oplock-Schlüssel, der dem Handle des Oplocks zugeordnet ist, sich von dem Schlüssel unterscheidet, der dem Handle des Vorgangs zugeordnet ist, und dieser Vorgang mit dem derzeit gewährten Oplock nicht kompatibel ist, dann ist dieser Oplock unterbrochen. Der Oplock wird sogar unterbrochen, wenn es sich um denselben Prozess oder Thread handelt, der den inkompatiblen Vorgang ausführt. Wenn beispielsweise ein Prozess einen Stream öffnet, für den ein exklusiver Oplock gewährt wird, und derselbe Prozess dann denselben Stream erneut öffnet, indem ein anderer (oder kein) Oplock-Schlüssel verwendet wird, wird der exklusive Oplock sofort unterbrochen.

Oplock-Schlüssel werden Handles zugeordnet, wenn die Handles erstellt werden. Sie können einem Oplock-Schlüssel ein Handle zuordnen, auch wenn keine Oplocks gewährt werden.

Weitere Informationen zu Oplocks und Oplock-Schlüsseln finden Sie unter Übersicht über Oplock-Semantik.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 7; veraltet ab Windows 8
Kopfzeile ntifs.h

Weitere Informationen

DUAL_OP_LOCK_KEY_ECP_CONTEXT

IoCreateFileEx