Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
För att möjliggöra för program att hämta standardprincipparametrar för ett slutpunktsrör, exponerar Winusb.dll funktionen WinUsb_GetPipePolicy för att hämta rörens standardprincip. Med funktionen WinUsb_SetPipePolicy kan ett program ange ett nytt värde för principparametern.
Med WinUSB kan du ändra standardbeteendet genom att tillämpa principer på en slutpunkts pipe. Genom att använda dessa principer kan du konfigurera WinUSB så att den bäst matchar enhetens funktioner. Följande tabell innehåller en lista över de pipe-principer som stöds av WinUSB.
Anmärkning
De principer som beskrivs i tabellen är endast giltiga för de angivna slutpunkterna. Att ange principen på andra slutpunkter påverkar inte WinUSB:s beteende för läs- eller skrivbegäranden.
| Försäkringsnummer | Policynamn | Beskrivning | Slutpunkt (riktning) | Standardvärde |
|---|---|---|---|---|
| 0x01 | SHORT_PACKET_TERMINATE | Skickar ett paket med noll längd för en skrivbegäran där bufferten är en multipel av den maximala paketstorlek som stöds av slutpunkten. | Bulk (OUT) Avbrott (OUT) |
Falskt |
| 0x02 | AUTOMATISK_AVSTÄNGNING_FELSÖKNING | Rensar automatiskt en stoppad rörledning utan att stoppa dataflödet. | Bulk (IN) Avbrott (IN) |
Falskt |
| 0x03 | PIPE_TRANSFER_TIMEOUT | Väntar på ett tidsgränsintervall i millisekunder innan begäran avbryts. | Bulk (IN) Bulk (UTGÅENDE) Avbrott (IN) Avbrott (UT) |
5 sekunder (5 000 millisekunder) för kontroll; 0 för andra |
| 0x04 | IGNORE_SHORT_PACKETS | Slutför en läsbegäran när ett kort paket tas emot eller ett visst antal byte läss. Om filstorleken är okänd avslutas begäran med ett kort paket. | Bulk (IN) Avbrott (IN) |
Falskt |
| 0x05 | ALLOW_PARTIAL_READS | Tillåter läsbegäranden från en enhet som returnerar mer data än vad som begärs av anroparen. | Bulk (IN) Avbrott (IN) |
TRUE |
| 0x06 | AUTO_FLUSH | Sparar överflödiga data från läsbegäran och lägger till dem i nästa läsbegäran eller tar bort överflödiga data. | Bulk (IN) Avbrott (IN) |
Falskt |
| 0x07 | RAW_IO | Kringgår kö- och felhantering för att öka prestandan för flera läsbegäranden. | Bulk (IN) Avbrott (IN) |
Falskt |
| 0x08 | MAXIMAL ÖVERFÖRINGSSTORLEK | Hämtar den maximala storleken på en USB-överföring som stöds av WinUSB. Det här är en skrivskyddad policy som kan hämtas genom att anropa WinUsb_GetPipePolicy. | Bulk (IN) Bulk (OUT) Avbrott (IN) Avbrott (OUT) |
|
| 0x09 | ÅTERSTÄLL_RÖR_VID_ÅTERUPPTAGNING | Återställer slutpunktens pipe efter att ha fortsatt från viloläge innan nya förfrågningar accepteras. | Bulk (IN) Bulk (OUT) Avbrott (IN) Avbrott (OUT) |
Falskt |
Följande tabell identifierar metodtips för hur du använder var och en av pipe-principerna och beskriver det resulterande beteendet när principen är aktiverad.
| Riktlinje | Aktivera om... | Beteende |
|---|---|---|
| SHORT_PACKET_TERMINATE(0x01) | Enheten kräver att OUT-överföringarna avslutas med ett paket med noll längd. De flesta enheter har inte det här kravet. | Om aktiverad (principparametervärdet är TRUE eller nonzero) följs varje skrivbegäran som är en multipel av den maximala paketstorleken som stöds av slutpunkten av ett paket med noll längd. Efter att ha skickat data till värdkontrollanten skickar WinUSB en skrivbegäran med ett paket med noll längd och slutför sedan den begäran som skapades av WinUsb_WritePipe. |
| AUTO_CLEAR_STALL | Du vill inte att de misslyckade överföringarna ska lämna slutpunkten i ett fastnat läge. Den här principen är endast användbar när du har flera väntande läsbegäranden till slutpunkten när RAW_IO är inaktiverad. |
|
| PIPE_TRANSFER_TIMEOUT | Du förväntar dig att överföringar till en slutpunkt slutförs inom en viss tid. |
|
| IGNORE_SHORT_PACKETS | RAW_IO är inaktiverat och du vill inte att korta paket ska slutföra läsbegäranden. |
|
| ALLOW_PARTIAL_READS | Enheten kan skicka mer data än vad som begärts om storleken på din begärandebuffert är en multipel av den maximala slutpunktspaketstorleken. Använd om din applikation vill läsa ett fåtal byte för att avgöra hur många byte som totalt ska läsas. |
|
| AUTO_FLUSH | ALLOW_PARTIAL_READS-policy är aktiverad. Enheten kan skicka mer data än vad som begärdes och programmet kräver inga andra data. Detta är möjligt om storleken på din begärandebuffert är en multipel av den maximala slutpunktspaketstorleken. |
AUTO_FLUSH definierar WinUSB:s beteende när ALLOW_PARTIAL_READS är aktiverat. Om ALLOW_PARTIAL_READS är inaktiverat ignoreras värdet för AUTO_FLUSH av WinUSB. WinUSB kan antingen ta bort återstående data eller skicka dem med uppringarens nästa läsbegäran.
|
| RAW_IO | Prestanda är en prioritet och programmet skickar samtidiga läsbegäranden till samma slutpunkt. RAW_IO inför vissa begränsningar för bufferten som skickas av anroparen i WinUsb_ReadPipe:
|
Om det är aktiverat kringgår överföringar köer och felhantering för att öka prestandan för flera läsbegäranden. WinUSB hanterar läsbegäranden på följande sätt:
Om du aktiverar den här inställningen förbättras prestanda avsevärt för flera läsbegäranden genom att minska fördröjningen mellan det sista paketet för en överföring och det första paketet i nästa överföring. |
| ÅTERSTÄLL_RÖR_VID_ÅTERUPPTAGNING | Enheten bevarar inte sitt dataväxlingstillstånd över vila. | Vid återställning från paus återställer WinUSB slutpunkten innan den tillåter anroparen att skicka nya begäranden till slutpunkten. |
Relaterade ämnen
- WinUSB Strömhushållning
- WinUSB-arkitektur och moduler
- Välja en drivrutinsmodell för att utveckla en USB-klientdrivrutin
- WinUSB (Winusb.sys) Installation
- Så här kommer du åt en USB-enhet med WinUSB Functions
- WinUSB-funktioner
- WinUsb_GetPipePolicy
- WinUsb_SetPipePolicy
- Introduktion till WinUSB för utvecklare