Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Według własnego uznania system plików może wysłać IRP do punktu wejścia Dispatch sterownika urządzenia dla żądania IRP_MJ_DEVICE_CONTROL z parametrami DeviceIoControl.IoControlCode w lokalizacji stosu I/O ustawionej na następujące:
IOCTL_XXX_CHECK_VERIFY
gdzie XXX jest typem urządzenia, takiego jak DISK, TAPE lub CDROM.
Typ DISK zawiera zarówno niepartycyjne (dyskietki) i partycjonowalne urządzenia nośnika wymiennego.
Jeśli podstawowy sterownik urządzenia ustali, że nośnik nie uległ zmianie, sterownik powinien ukończyć protokół IRP, zwracając blok IoStatus o następujących wartościach:
Status |
Ustaw wartość na STATUS_SUCCESS |
Informacje |
Ustaw wartość zero |
Ponadto, jeśli typ urządzenia to DISK lub CDROM, a obiekt wywołujący określił bufor wyjściowy, sterownik zwraca liczbę zmian nośnika w buforze irp-AssociatedIrp.SystemBuffer> i ustawia parametr Irp-IoStatus.Information> na wartość sizeof(ULONG). Zwracając tę liczbę, kierowca daje rozmówcy możliwość ustalenia, czy media zmieniły się z perspektywy.
Jeśli podstawowy sterownik urządzenia ustali, że nośnik uległ zmianie, podejmuje inną akcję w zależności od tego, czy wolumin jest zamontowany. Jeśli wolumin jest zamontowany (flaga VPB_MOUNTED jest ustawiona w VPB), sterownik powinien wykonać następujące czynności:
Ustaw flagi w obiekcie DeviceObject według flag ORing z DO_VERIFY_VOLUME.
Ustaw blok IoStatus w IRP na następujące wartości:
- Stan ustawiony na WYMAGANA_WERYFIKACJA_STATUSU
- Informacje ustawione na zero
Wywołaj metodę IoCompleteRequest przy użyciu wejściowego protokołu IRP.
Jeśli wolumin nie jest zamontowany, sterownik nie może ustawić bitu DO_VERIFY_VOLUME. Sterownik powinien ustawić wartość IoStatus.Status na STATUS_IO_DEVICE_ERROR, ustawić wartość IoStatus.Information na zero i wywołać element IoCompleteRequest z IRP.