Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der IOCTL_LMR_DISABLE_LOCAL_BUFFERING-Steuerelementcode deaktiviert das lokale clientseitige Zwischenspeichern von Daten beim Lesen oder Schreiben von Daten in eine Remotedatei. Dies ist ein intern definierter Steuerelementcode, der in einem öffentlichen Header nicht verfügbar ist.
Trotz der Benennungskonvention wird dieser Steuerelementcode mit einem Gerätetyp von FILE_DEVICE_NETWORK_FILE_SYSTEM definiert, sodass er anstelle eines I/O-Geräte-Steuerelementcodes (IOCTL)-Codes (File System Control, FSCTL)-Code wird. Sie müssen es mithilfe von NtFsControlFile anstelle von DeviceIoControl senden. Der Steuerelementcode und die Parameter werden weiter unten mithilfe der DeviceIoControl-Konvention zur Referenz dokumentiert.
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to device
IOCTL_LMR_DISABLE_LOCAL_BUFFERING, // dwIoControlCode
(LPVOID) NULL, // lpInBuffer
(DWORD) 0, // nInBufferSize
(LPVOID) NULL, // lpOutBuffer
(DWORD) 0, // nOutBufferSize
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
);
Parameter
-
hDevice [in]
-
Ein Handle für die Remotedatei. Rufen Sie zum Abrufen dieses Handle die CreateFile-Funktion auf.
-
dwIoControlCode [in]
-
Der Steuerelementcode für den Vorgang. Verwenden Sie den Wert 0x140390 für diesen Vorgang.
-
lpInBuffer
-
Nicht verwendet, muss NULL sein.
-
nInBufferSize [in]
-
Die Größe des Eingabepuffers in Byte. Muss Null sein.
-
lpOutBuffer [out]
-
Nicht verwendet, muss NULL sein.
-
nOutBufferSize [in]
-
Die Größe des Ausgabepuffers in Byte. Muss Null sein.
-
lpBytesReturned [out]
-
Ein Zeiger auf eine Variable, die die Größe der im Ausgabepuffer gespeicherten Daten in Byte empfängt.
Wenn der Ausgabepuffer zu klein ist, schlägt der Aufruf fehl, gibt die GetLastError-FunktionERROR_INSUFFICIENT_BUFFER zurück, und lpBytesReturned ist Null.
Wenn der parameter lpOverlappedNULL ist, kann lpBytesReturned nicht NULL sein. Auch wenn ein Vorgang keine Ausgabedaten zurückgibt und der lpOutBuffer-ParameterNULL ist, verwendet DeviceIoControllpBytesReturned. Nach einem solchen Vorgang ist der Wert von lpBytesReturned bedeutungslos .
Wenn lpOverlapped nicht NULL ist, kann lpBytesReturnedNULL sein. Wenn lpOverlapped nicht NULL ist und der Vorgang Daten zurückgibt, ist lpBytesReturned bedeutungslos , bis der überlappende Vorgang abgeschlossen ist. Rufen Sie die GetOverlappedResult-Funktion auf, um die Anzahl der zurückgegebenen Bytes abzurufen. Wenn der hDevice-Parameter einem E/A-Vervollständigungsport zugeordnet ist, können Sie die Anzahl der bytes abrufen, die durch Aufrufen der GetQueuedCompletionStatus-Funktion zurückgegeben werden.
-
lpOverlapped [in]
-
Ein Zeiger auf eine ÜBERLAPPENDE Struktur.
Wenn der hDevice-Parameter ohne Angabe von FILE_FLAG_OVERLAPPED geöffnet wurde, wird lpOverlapped ignoriert.
Wenn hDevice mit dem FILE_FLAG_OVERLAPPED-Flag geöffnet wurde, wird der Vorgang als überlappender (asynchroner) Vorgang ausgeführt. In diesem Fall muss lpOverlapped auf eine gültige ÜBERLAPPENDE Struktur verweisen, die ein Handle auf ein Ereignisobjekt enthält. Andernfalls schlägt die Funktion auf unvorhersehbare Weise fehl.
Bei überlappenden Vorgängen gibt DeviceIoControl sofort zurück, und das Ereignisobjekt wird signalisiert, wenn der Vorgang abgeschlossen wurde. Andernfalls wird die Funktion erst zurückgegeben, wenn der Vorgang abgeschlossen wurde oder ein Fehler auftritt.
Zurückgegebener Wert
Das Aufrufen von DeviceIoControl mit diesem Steuerelementcode gibt immer einen Fehler zurück, da es sich um eine FSCTL und nicht um eine IOCTL handelt. Verwenden Sie stattdessen NtFsControlFile . NtFsControlFile gibt einen NTSTATUS-Wert zurück; STATUS_SUCCESS gibt an, dass der Vorgang erfolgreich abgeschlossen wurde.
Bemerkungen
Der IOCTL_LMR_DISABLE_LOCAL_BUFFERING-Steuerelementcode wird intern vom System als 0x140390 und nicht in einer öffentlichen Headerdatei definiert. Sie wird von speziellen Anwendungen verwendet, um das lokale clientseitige Zwischenspeichern von Daten beim Lesen oder Schreiben von Daten in eine Remotedatei zu deaktivieren. Nachdem die lokale Pufferung deaktiviert wurde, bleibt die Einstellung wirksam, bis alle geöffneten Handles für die Datei geschlossen werden und der Umleitungsmodul seine internen Datenstrukturen bereinigt.
Allgemeine Anwendungen sollten IOCTL_LMR_DISABLE_LOCAL_BUFFERING nicht verwenden, da sie zu übermäßigem Netzwerkdatenverkehr und damit verbundenem Leistungsverlust führen kann. Der IOCTL_LMR_DISABLE_LOCAL_BUFFERING Steuercode sollte nur in spezialisierten Anwendungen verwendet werden, die große Datenmengen über das Netzwerk verschieben und gleichzeitig versuchen, die Nutzung der Netzwerkbandbreite zu maximieren. Beispielsweise verwenden die Funktionen CopyFile und CopyFileExIOCTL_LMR_DISABLE_LOCAL_BUFFERING , um die Leistung großer Dateikopien zu verbessern.
IOCTL_LMR_DISABLE_LOCAL_BUFFERING wird nicht von lokalen Dateisystemen implementiert und schlägt mit dem Fehler ERROR_INVALID_FUNCTION fehl. Das Ausstellen des IOCTL_LMR_DISABLE_LOCAL_BUFFERING-Steuerelementcodes für Remoteverzeichnishandles schlägt mit dem Fehler ERROR_NOT_SUPPORTED fehl.
Siehe auch