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.
W przestrzeni nazw ACPI obiekt, który jest urządzeniem — na przykład urządzenie o nazwie "ABCD" może mieć obiekty podrzędne, które są urządzeniami podrzędnymi urządzenia lub które są metodami sterującymi obsługiwanymi przez urządzenie. Każdy obiekt podrzędny, który jest urządzeniem podrzędnym urządzenia nadrzędnego, może z kolei rekursywnie mieć obiekty podrzędne, które są urządzeniami podrzędnymi lub metodami sterowania.
Na przykład w następującej uproszczonej przestrzeni nazw ACPI katalog główny przestrzeni nazw ACPI jest wyznaczony przez "\", a obiekt "ABCD" jest urządzeniem, które jest bezpośrednim elementem podrzędnym katalogu głównego przestrzeni nazw ACPI. Ponadto urządzenie "ABCD" ma dwa bezpośrednie urządzenia podrzędne o nazwach "CHL1" i "CHL2" oraz obiekt podrzędny o nazwie "_FOO". Ponadto urządzenie podrzędne "CHL2" ma urządzenie podrzędne o nazwie "CHL3", a urządzenie "CHL3" ma obiekt podrzędny o nazwie "_FOO".
\ root of ACPI namespace
ABCD parent device
CHL1 child device of ABCD
CHL2 child device of ABCD
CHL3 child device of CHL2
_FOO control method
_FOO control method
Aby użyć IOCTL_ACPI_EVAL_METHOD_EX lub IOCTL_ACPI_ASYNC_EVAL_METHOD_EX, sterownik urządzenia dostarcza ścieżkę i nazwę metody sterowania w przestrzeni nazw ACPI. Aby ułatwić uzyskanie ścieżki i nazwy urządzenia i obiektów podrzędnych urządzenia, system Windows obsługuje żądanie IOCTL_ACPI_ENUM_CHILDREN . Jeśli chodzi o uproszczoną przestrzeń nazw ACPI podaną w tej sekcji jako przykład, sterownik w stosie urządzenia "ABCD" może użyć tego żądania, aby wykonać następujące czynności:
Wylicz urządzenie "ABCD" oraz bezpośrednie urządzenia podrzędne "ABCD". Na przykład żądanie może służyć do zwrócenia ciągu "\ABCD", "\ABCD". CHL1" i "\ABCD. CHL2".
Rekursywnie wylicza wszystkie urządzenia w przestrzeni nazw "ABCD". Na przykład żądanie może służyć do zwrócenia ciągu "\ABCD", "\ABCD". CHL1, '\ABCD. CHL2" i "\ABCD. CHL2. CHL3".
Rekursywnie wylicza wszystkie obiekty podrzędne podrzędne "ABCD" podanej nazwy. Podana nazwa działa jako filtr, tak aby wyliczane były tylko te obiekty podrzędne o tej samej nazwie. Na przykład w przypadku podanej nazwy "_FOO" żądanie może służyć do zwracania "\ABCD._FOO" i "\ABCD". CHL2. CHL3._FOO".
Po uzyskaniu ścieżki i nazwy metody sterującej sterownik może podać ścieżkę i nazwę jako dane wejściowe do IOCTL_ACPI_EVAL_METHOD_EX lub IOCTL_ACPI_ASYNC_EVAL_METHOD_EX, zgodnie z opisem w temacie Ocenianie metod kontroli ACPI Synchronicznie.
Żądanie IOCTL_ACPI_ENUM_CHILDREN przyjmuje jako dane wejściowe ACPI_ENUM_CHILDREN_INPUT_BUFFER struktury przydzielanej przez sterownik ACPI_ENUM_CHILDREN_INPUT_BUFFER zawierającej następujące elementy członkowskie:
Signature
Podpis buforu wejściowego, który musi być ustawiony na ACPI_ENUM_CHILDREN_INPUT_BUFFER_SIGNATURE.
Flags
Flaga określająca, które obiekty w przestrzeni nazw ACPI urządzenia są wyliczane przez sterownik ACPI. Sterownik ACPI zwraca pełną ścieżkę i nazwę wyliczonego obiektu rozpoczynającego się od katalogu głównego przestrzeni nazw ACPI. Flaga musi być ustawiona na jedną z następujących wartości:
| Flaga | Opis |
|---|---|
| ENUMERUJ_DZIECI_TYLKO_NATYCHMIASTOWE | Wylicza urządzenie oraz jego bezpośrednie urządzenia podrzędne. |
| ENUM_DZIECI_WIELOPOZIOMOWY | Wylicza urządzenie i rekursywnie wylicza wszystkie urządzenia podrzędne urządzenia. |
| ENUM_CHILDREN_NAME_IS_FILTER | Operacja bitowa OR na ENUM_CHILDREN i ENUM_CHILDREN_NAME_IS_FILTER wylicza obiekty podrzędne urządzenia, których nazwa jest identyczna z tą podaną przez członka Nazwa. |
NameLength
Liczba znaków ASCII, które zawiera tablica Name .
Name
Tablica ASCII z czterema znakami zakończona znakiem NULL, zawierająca nazwę obiektu podrzędnego, używaną przez sterownik ACPI do ograniczenia wyliczania obiektów podrzędnych wyłącznie do tych, które mają taką samą nazwę.
Żądanie IOCTL_ACPI_ENUM_CHILDREN zwraca ścieżkę i nazwę obiektów podrzędnych w ACPI_ENUM_CHILDREN_OUTPUT_BUFFER o zmiennej długości przydzielonej przez sterownik, która zawiera następujące elementy członkowskie:
Signature
Podpis buforu wyjściowego, który musi być ustawiony na ACPI_ENUM_CHILDREN_OUTPUT_BUFFER_SIGNATURE.
NumberOfChildren
Liczba elementów typu ACPI_ENUM_CHILD w tablicy Dzieci.
Children
Tablica elementów typu ACPI_ENUM_CHILD. Element członkowski Name struktury ACPI_ENUM_CHILD zawiera ścieżkę i nazwę obiektu podrzędnego, a element członkowski Flags wskazuje, czy obiekt podrzędny ma obiekty podrzędne.
Jeśli bufor wyjściowy przydzielany przez sterownik nie jest wystarczająco duży, aby zwrócić wszystkie wyliczone nazwy podrzędne, sterownik ACPI nie zwraca nazw podrzędnych i ustawia członka Status w IO_STATUS_BLOCK dla żądania na STATUS_BUFFER_OVERFLOW. W takim przypadku, jeśli rozmiar w bajtach buforu wyjściowego wynosi co najmniej rozmiar (ACPI_ENUM_CHILDREN_OUTPUT_BUFFER_SIGNATURE), sterownik ACPI ustawia również wartość NumberOfChildren na rozmiar w bajtach, który jest wymagany do pobrania żądanych ścieżek i nazw.