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 von Daten aus einer Remotedatei oder beim Schreiben von Daten in eine Remotedatei. Dies ist ein intern definierter Steuerelementcode, der in einem öffentlichen Header nicht verfügbar ist.
Rufen Sie zum Ausführen dieses Vorgangs die DeviceIoControl-Funktion mit den folgenden Parametern auf.
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 zur 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 Bytes. Muss Null sein.
-
lpOutBuffer [out]
-
Nicht verwendet, muss NULL sein.
-
nOutBufferSize [in]
-
Die Größe des Ausgabepuffers in Bytes. Muss Null sein.
-
lpBytesReturned [out]
-
Ein Zeiger auf eine Variable, die die Größe der daten empfängt, die im Ausgabepuffer gespeichert sind, in Bytes.
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 lpOverlapped-ParameterNULL 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 sinnlos.
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 wurde. Rufen Sie die GetOverlappedResult-Funktion auf, um die Anzahl der zurückgegebenen Bytes abzurufen. Wenn der hDevice-Parameter einem I/O-Abschlussport 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 geöffnet wurde, ohne FILE_FLAG_OVERLAPPED anzugeben, 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 gibt die Funktion erst zurück, wenn der Vorgang abgeschlossen wurde oder bis ein Fehler auftritt.
Rückgabewert
Wenn der Vorgang erfolgreich abgeschlossen ist, gibt DeviceIoControl einen Wert ohne Zero zurück.
Wenn der Vorgang fehlschlägt oder aussteht, gibt DeviceIoControl null zurück. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.
Bemerkungen
Der IOCTL_LMR_DISABLE_LOCAL_BUFFERING Steuerelementcode wird intern vom System als 0x140390 und nicht in einer öffentlichen Headerdatei definiert. Es wird von speziellen Anwendungen verwendet, um die lokale clientseitige Zwischenspeicherung von Daten beim Lesen von Daten aus oder Schreiben von Daten in eine Remotedatei zu deaktivieren. Nachdem die lokale Pufferung deaktiviert wurde, bleibt die Einstellung wirksam, bis alle geöffneten Handle für die Datei geschlossen werden und der Umleitungsgeber seine internen Datenstrukturen bereinigt.
Allgemeine Anwendungen sollten IOCTL_LMR_DISABLE_LOCAL_BUFFERING nicht verwenden, da sie zu übermäßigem Netzwerkdatenverkehr und zugehörigen 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, während versucht wird, die Netzwerkbandbreite zu maximieren. Beispielsweise verwenden die Funktionen CopyFile und CopyFileExIOCTL_LMR_DISABLE_LOCAL_BUFFERING, um die Leistung der großen Dateikopie zu verbessern.
IOCTL_LMR_DISABLE_LOCAL_BUFFERING wird nicht von lokalen Dateisystemen implementiert und schlägt mit dem Fehler ERROR_INVALID_FUNCTION fehl. Das Ausgeben des IOCTL_LMR_DISABLE_LOCAL_BUFFERING Steuerelementcodes für Remoteverzeichnishandles schlägt mit dem Fehler ERROR_NOT_SUPPORTED fehl.
Weitere Informationen