Udostępnij przez


opisy DEVICE_DSM_ACTION

Na tej stronie opisano stałe DEVICE_DSM_ACTION, które mogą służyć do wykonywania akcji zarządzania zestawem danych (DSM) na zestawie danych urządzenia. Te stałe są definiowane w ntddstor.h. Akcje zidentyfikowane jako niezniszczalne nie spowodują zmiany żadnych danych. Aby uzyskać informacje na temat przetwarzania akcji DSM, zobacz Omówienie zarządzania zestawem danych.

stała DEVICE_DSM_ACTION Opis
DeviceDsmAction_None Tylko do celów inicjowania struktury.
DeviceDsmAction_Trim Sterownik wykona operację przycinania.
DeviceDsmAction_Notification Bezpieczna. Sterownik wykona operację powiadamiania. W przypadku tej akcji blok parametru bezpośrednio po strukturze DEVICE_DSM_INPUT jest sformatowany jako struktura DEVICE_DSM_NOTIFICATION_PARAMETERS. Obsługiwane w systemie Windows 7 i nowszych wersjach.
DeviceDsmAction_OffloadRead Bezpieczna. Sterownik wykonuje operację odciążania odczytu. W przypadku tej akcji blok parametrów bezpośrednio po strukturze DEVICE_DSM_INPUT jest sformatowany jako struktura DEVICE_DSM_OFFLOAD_READ_PARAMETERS. Dane wyjściowe składają się ze struktury DEVICE_DSM_OUTPUT, po której następuje struktura STORAGE_OFFLOAD_READ_OUTPUT. Obsługiwane w systemie Windows 8 i nowszych wersjach.
DeviceDsmAction_OffloadWrite Sterownik wykona operację odciążania zapisu. W przypadku tej akcji blok parametrów bezpośrednio po strukturze DEVICE_DSM_INPUT jest sformatowany jako struktura DEVICE_DSM_OFFLOAD_WRITE_PARAMETERS. Dane wyjściowe składają się ze struktury DEVICE_DSM_OUTPUT, po której następuje struktura STORAGE_OFFLOAD_WRITE_OUTPUT. Obsługiwane w systemie Windows 8 i nowszych wersjach.
DeviceDsmAction_Allocation Bezpieczna. Sterownik wykona operację aprowizacji bloków logicznych. Zakres bloków logicznych jest określony w jednej strukturze DEVICE_DSM_RANGE. Obsługiwane w systemie Windows 8 i nowszych wersjach.
DeviceDsmAction_Repair Bezpieczna. Tylko do użytku wewnętrznego.
DeviceDsmAction_Scrub Bezpieczna. Tylko do użytku wewnętrznego.
DeviceDsmAction_DrtQuery Bezpieczna. Tylko do użytku wewnętrznego.
DeviceDsmAction_DrtClear Bezpieczna. Tylko do użytku wewnętrznego.
DeviceDsmAction_DrtDisable Bezpieczna. Tylko do użytku wewnętrznego.
DeviceDsmAction_TieringQuery Bezpieczna. Tylko do użytku wewnętrznego.
DeviceDsmAction_Map Bezpieczna. Tylko do użytku wewnętrznego.
DeviceDsmAction_RegenerateParity Bezpieczna. Tylko do użytku wewnętrznego.
DeviceDsmAction_NvCache_Change_Priority Bezpieczna. Sterownik zmieni priorytet buforowania określonych zakresów bloków logicznych. Nowy priorytet docelowy jest ustawiany w strukturze DEVICE_DSM_NVCACHE_CHANGE_PRIORITY_PARAMETERS, która znajduje się w bloku parametrów bezpośrednio po strukturze DEVICE_DSM_INPUT. Zakresy bloków logicznych, dla których należy zmienić priorytet, są podane w co najmniej jednej strukturze DEVICE_DSM_RANGE. Obsługiwane w systemie Windows 8.1 i nowszych wersjach.
DeviceDsmAction_NvCache_Evict Bezpieczna. Sterownik eksmituje dane ze nośnika buforowania. Aby wykluczyć wszystkie dane, ustaw flagę DEVICE_DSM_FLAG_ENTIRE_DATA_SET_RANGE w Flagi elementu członkowskiego DEVICE_DSM_INPUT i nie dołączaj żadnych struktur DEVICE_DSM_RANGE. Określone zakresy bloków logicznych do eksmisji są podane w co najmniej jednej strukturze DEVICE_DSM_RANGE. Akcja DeviceDsmAction_NvCache_Evict jest wykonywana synchronicznie. Żadne inne akcje nie są obsługiwane, dopóki akcja eksmitowana nie powiedzie się lub nie powiedzie się. Aby ograniczyć jego wpływ na aplikacje korzystające z urządzenia, każda akcja DeviceDsmAction_NvCache_Evict wydana powinna obejmować stosunkowo małe zakresy danych. Nie powinny przekraczać 10 MB i najlepiej być mniejsze niż 2 MB. Pozwoli to zminimalizować prawdopodobieństwo, że aplikacje na poziomie użytkownika będą doświadczać zauważalnych opóźnień podczas uzyskiwania dostępu do danych na urządzeniu. Obsługiwane w systemie Windows 8.1 i nowszych wersjach.
DeviceDsmAction_TopologyIdQuery Bezpieczna. Tylko do użytku wewnętrznego.
DeviceDsmAction_GetPhysicalAddresses Bezpieczna. Sterownik zwróci zakresy adresów fizycznych, które odpowiadają co najmniej jednemu zakresowi bloków logicznych. Ta akcja jest obsługiwana tylko na dyskach pamięci trwałej. Zakresy bloków logicznych są określane jako seria struktur DEVICE_DSM_RANGE bezpośrednio po strukturze DEVICE_DSM_INPUT. Dane wyjściowe składają się z struktury DEVICE_DSM_OUTPUT, po której następuje wypełnienie, a następnie struktura DEVICE_DSM_PHYSICAL_ADDRESSES_OUTPUT z fizycznymi zakresami adresów żądanymi w bloku wyjściowym. Każdy zakres adresów fizycznych jest zwracany w strukturze DEVICE_STORAGE_ADDRESS_RANGE. Jeśli bufor wyjściowy nie jest wystarczająco duży, aby przechowywać wszystkie dane, maszyna DSM zwraca STATUS_BUFFER_OVERFLOW, a TotalNumberOfRanges pole struktury DEVICE_DSM_PHYSICAL_ADDRESSES_OUTPUT zawiera liczbę elementów DEVICE_STORAGE_ADDRESS_RANGE wymaganych do spełnienia żądania. Wszystkie zakresy adresów fizycznych, które zawierają błąd pamięci, będą miały DEVICE_DSM_PHYSICAL_ADDRESS_HAS_MEMORY_ERROR jako adres. Aplikacje mogą mapować zwracane zakresy adresów fizycznych na wejściowe zakresy bloków logicznych, śledząc długość każdego zwracanego zakresu adresów fizycznych. Należy pamiętać, że pojedynczy zakres bloków logicznych może odpowiadać wielu zakresom adresów fizycznych. Jeśli DEVICE_DSM_FLAG_PHYSICAL_ADDRESSES_OMIT_TOTAL_RANGES jest ustawiona w polu Flags struktury DEVICE_DSM_INPUT, sterownik nie będzie obliczał TotalNumberOfRanges. Jest to optymalizacja wydajności dla osób wywołujących, które nie muszą znać łącznej liczby zakresów.
DeviceDsmAction_ScopeRegen Bezpieczna. Tylko do użytku wewnętrznego.
DeviceDsmAction_ReportZones Bezpieczna. Tylko do użytku wewnętrznego.
DeviceDsmAction_OpenZone Bezpieczna. Tylko do użytku wewnętrznego.
DeviceDsmAction_FinishZone Bezpieczna. Tylko do użytku wewnętrznego.
DeviceDsmAction_CloseZone Bezpieczna. Tylko do użytku wewnętrznego.
DeviceDsmAction_ResetWritePointer Tylko do użytku wewnętrznego.
DeviceDsmAction_GetRangeErrorInfo Bezpieczna. Sterownik zwróci informacje o tym, czy jeden lub więcej zakresów bloków logicznych zawiera błędy nośnika. Jest to obsługiwane tylko na dyskach pamięci trwałej. Zakresy bloków logicznych są określane jako seria struktur DEVICE_DSM_RANGE bezpośrednio po strukturze DEVICE_DSM_INPUT. Dane wyjściowe składają się ze struktury DEVICE_DSM_OUTPUT, po której następuje wypełnienie i struktura DEVICE_DSM_RANGE_ERROR_OUTPUT), która zawiera tablicę DEVICE_STORAGE_RANGE_ATTRIBUTES. Jeśli bufor wyjściowy nie jest wystarczająco duży, aby pomieścić wszystkie dane, maszyna DSM zwraca STATUS_BUFFER_OVERFLOW, a totalNumberOfRanges pole struktury DEVICE_DSM_RANGE_ERROR_OUTPUT zawiera liczbę elementów DEVICE_STORAGE_RANGE_ATTRIBUTES wymaganych do spełnienia żądania. Każda struktura DEVICE_STORAGE_RANGE_ATTRIBUTES zawiera pole IsRangeBad. Sterownik ustawia to pole na 1, gdy zakres bloków logicznych zawiera błąd nośnika. Jeśli w żadnym z żądanych zakresów nie ma żadnych błędów multimedialnych, sterownik ustawia DEVICE_STORAGE_NO_ERRORS w polu Flagi DEVICE_DSM_RANGE_ERROR_OUTPUT. Elementy tablicy DEVICE_STORAGE_RANGE_ATTRIBUTES są sortowane tak, aby ich kolejność odpowiada kolejności zakresów wejściowych. Jeśli na przykład pierwszy zakres danych wejściowych został podzielony na 3 zakresy danych wyjściowych, będą to pierwsze 3 zakresy w tablicy. Obiekt wywołujący może dowiedzieć się, które zakresy danych wyjściowych odpowiadają zakresowi danych wejściowych, śledząc długość zakresów danych wyjściowych.
DeviceDsmAction_WriteZeroes Tylko do użytku wewnętrznego.
DeviceDsmAction_LostQuery Bezpieczna. Tylko do użytku wewnętrznego.
DeviceDsmAction_GetFreeSpace Bezpieczna. Tylko do użytku wewnętrznego.
DeviceDsmAction_ConversionQuery Bezpieczna. Tylko do użytku wewnętrznego.