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.
Aby umożliwić aplikacjom pobieranie i ustawianie domyślnych parametrów zasad potoku punktu końcowego, Winusb.dll uwidacznia funkcję WinUsb_GetPipePolicy w celu pobrania domyślnych zasad potoku. Funkcja WinUsb_SetPipePolicy umożliwia aplikacji ustawienie parametru zasad na nową wartość.
WinUSB umożliwia zmianę domyślnego działania poprzez zastosowanie zasad do kanału punktu końcowego. Za pomocą tych zasad można skonfigurować usługę WinUSB, aby najlepiej dopasować urządzenie do jego możliwości. Poniższa tabela zawiera listę zasad potoku obsługiwanych przez usługę WinUSB.
Uwaga / Notatka
Zasady opisane w tabeli są prawidłowe tylko dla określonych punktów końcowych. Ustawienie zasad w innych punktach końcowych nie ma wpływu na zachowanie WinUSB dla żądań odczytu lub zapisu.
| Numer polisy | Nazwa zasady | Opis | Punkt końcowy (kierunek) | Wartość domyślna |
|---|---|---|---|---|
| 0x01 | Krótkie zakończenie pakietu | Wysyła pakiet o zerowej długości dla żądania zapisu, w którym bufor jest wielokrotnym maksymalnym rozmiarem pakietów obsługiwanym przez punkt końcowy. | Zbiorcze (WYJŚCIOWE) Przerwanie (OUT) |
FAŁSZYWY |
| 0x02 | AUTO_USUWANIE_ZAWIESZENIA | Automatycznie czyści zatrzymany potok bez zatrzymywania przepływu danych. | Zbiorczo (IN) Przerwanie (IN) |
FAŁSZYWY |
| 0x03 | PIPE_TRANSFER_TIMEOUT | Czeka na interwał limitu czasu (w milisekundach) przed anulowaniem żądania. | Zbiorczo (IN) Zbiorcze (OUT) Przerwanie (IN) Przerwanie (OUT) |
5 sekund (5000 milisekund) dla kontroli; 0 dla innych |
| 0x04 | IGNORUJ_KRÓTKIE_PAKIETY | Kończy żądanie odczytu po odebraniu krótkiego pakietu lub odczytaniu określonej liczby bajtów. Jeśli rozmiar pliku jest nieznany, żądanie zostanie zakończone przy krótkim pakiecie. | Zbiorczo (IN) Przerwanie (IN) |
FAŁSZYWY |
| 0x05 | ALLOW_PARTIAL_READS | Umożliwia odczytywanie żądań z urządzenia, które zwraca więcej danych niż żądane przez obiekt wywołujący. | Zbiorczo (IN) Przerwanie (IN) |
PRAWIDŁOWE |
| 0x06 | AUTO_FLUSH | Zapisuje nadmiarowe dane z żądania odczytu i dodaje je do następnego żądania odczytu lub odrzuca nadmiar danych. | Zbiorczo (IN) Przerwanie (IN) |
FAŁSZYWY |
| 0x07 | RAW_IO | Pomija kolejkowanie i obsługę błędów w celu zwiększenia wydajności wielu żądań odczytu. | Zbiorczo (IN) Przerwanie (IN) |
FAŁSZYWY |
| 0x08 | MAXIMUM_TRANSFER_SIZE | Pobiera maksymalny rozmiar transferu USB obsługiwanego przez WinUSB. Jest to polityka tylko do odczytu, którą można pobrać, wywołując WinUsb_GetPipePolicy. | Zbiorczo (IN) Zbiorcze (OUT) Przerwanie (IN) Przerwanie (OUT) |
|
| 0x09 | RESET_PIPE_ON_RESUME | Resetuje kanał punktu końcowego po wznowieniu z zawieszenia, zanim zaakceptuje nowe żądania. | Zbiorczo (IN) Zbiorcze (OUT) Przerwanie (IN) Przerwanie (OUT) |
FAŁSZYWY |
W poniższej tabeli przedstawiono najlepsze rozwiązania dotyczące używania poszczególnych zasad potoku i opisano wynikowe zachowanie po włączeniu zasad.
| Policy | Włącz, jeśli... | Zachowanie |
|---|---|---|
| SHORT_PACKET_TERMINATE(0x01) | Urządzenie wymaga, aby transfery OUT były zakończone pakietem o zerowej długości. Większość urządzeń nie ma tego wymagania. | W przypadku włączenia (wartość parametru zasad to TRUE lub nonzero), każde żądanie zapisu, które jest wielokrotnym maksymalnym rozmiarem pakietów obsługiwanym przez punkt końcowy, następuje po nim pakiet o zerowej długości. Po wysłaniu danych do kontrolera hosta usługa WinUSB wysyła żądanie zapisu z pakietem o zerowej długości, a następnie kończy żądanie utworzone przez WinUsb_WritePipe. |
| AUTO_USUWANIE_ZAWIESZENIA | Nie chcesz, aby nieudane transfery pozostawiły punkt końcowy w stanie wstrzymania. Te zasady są przydatne tylko wtedy, gdy masz wiele oczekujących żądań odczytu do punktu końcowego, gdy RAW_IO jest wyłączona. |
|
| PIPE_TRANSFER_TIMEOUT | Oczekujesz, że transfery do punktu końcowego zakończą się w określonym czasie. |
|
| IGNORUJ_KRÓTKIE_PAKIETY | RAW_IO jest wyłączona i nie chcesz, aby krótkie pakiety wypełniały żądania odczytu. |
|
| ALLOW_PARTIAL_READS | Urządzenie może wysyłać więcej danych niż żądano, jeśli rozmiar buforu żądania jest wielokrotnym maksymalnym rozmiarem pakietu punktu końcowego. Użyj, jeśli Twoja aplikacja chce odczytać kilka bajtów, aby określić, ile łącznie bajtów należy odczytać. |
|
| AUTO_FLUSH | Polityka ALLOW_PARTIAL_READS jest włączona. Urządzenie może wysyłać więcej danych niż zażądano, a aplikacja nie wymaga żadnych innych danych. Jest to możliwe, jeśli rozmiar buforu żądania jest wielokrotnym maksymalnym rozmiarem pakietu punktu końcowego. |
AUTO_FLUSH definiuje zachowanie WinUSB, gdy włączone jest ALLOW_PARTIAL_READS. Jeśli ALLOW_PARTIAL_READS jest wyłączony, wartość AUTO_FLUSH jest ignorowana przez WinUSB. WinUSB może odrzucić pozostałe dane lub wysłać je przy użyciu następnego żądania odczytu obiektu wywołującego.
|
| RAW_IO | Wydajność jest priorytetem, a aplikacja przesyła równoczesne żądania odczytu do tego samego punktu końcowego. RAW_IO nakłada pewne ograniczenia dotyczące buforu przekazywanego przez obiekt wywołujący w WinUsb_ReadPipe:
|
Jeśli ta opcja jest włączona, transfery pomijają kolejkowanie i obsługę błędów w celu zwiększenia wydajności wielu żądań odczytu. Usługa WinUSB obsługuje żądania odczytu w następujący sposób:
Włączenie tego ustawienia znacznie poprawia wydajność wielu żądań odczytu, zmniejszając opóźnienie między ostatnim pakietem jednego transferu a pierwszym pakietem następnego transferu. |
| RESET_PIPE_ON_RESUME | Urządzenie nie zachowuje stanu przełączania danych podczas zawieszenia. | Po wznowieniu od wstrzymania WinUSB resetuje punkt końcowy, zanim umożliwi osobie wywołującej wysyłanie nowych żądań do punktu końcowego. |
Tematy pokrewne
- Zarządzanie energią WinUSB
- Architektura i moduły WinUSB
- Wybieranie modelu sterowników do opracowywania sterownika klienta USB
- WinUSB (Winusb.sys) Instalacja
- Jak uzyskać dostęp do urządzenia USB przy użyciu funkcji WinUSB
- funkcje WinUSB
- WinUsb_GetPipePolicy
- WinUsb_SetPipePolicy
- Wprowadzenie do winUSB dla deweloperów