Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Všechny požadavky na uživatelský režim se odesílají do ovladače v režimu jádra poskytnutého Microsoftem GenericUSBFn.sys. Můžete vytvořit službu v uživatelském režimu, která komunikuje s GenericUSBFn.sys odesláním tohoto V/V řídicího kódu (IOCTL) a GenericUSBFn.sys zpracovává komunikaci v režimu jádra s ovladači funkce USB.
IOCTL kódy deklarované v genericusbfnioctl.h slouží ke komunikaci se GenericUSBFn.sys ze služby v uživatelském režimu.
Následující kroky popisují, jak můžete definovat službu rozhraní USB, která komunikuje s GenericUSBFn.sys komunikovat s ovladači funkcí USB:
- Při spuštění služba naslouchá příchodu rozhraní zařízení. Identifikátor GUID rozhraní zařízení je hodnota InterfaceGUID deklarovaná v registru pod OEM-definovaným subklíčem HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\USBFN\Interfaces. Existují dvě běžné metody naslouchání příjezdu zařízení:
- Aktivujte spuštění služby. Další informace najdete v tématu Události spouštěče služby.
- Zaregistrujte se pro aktivaci rozhraní zařízení. Další informace najdete v CM_Register_Notification funkci.
- Po příchodu rozhraní služba otevře popisovač zařízení:
- Symbolický název zařízení získáte voláním funkce CM_Get_Device_Interface_List. Zadejte identifikátor GUID rozhraní zařízení, který je deklarován v hodnotě InterfaceGUID v registru.
- Jakmile budete mít symbolický název zařízení, otevřete rukojeť k zařízení pomocí funkce CreateFile.
- Služba vydává IOCTL_GENERICUSBFN_GET_CLASS_INFO za účelem načtení informací o dostupných kanálech podle konfigurace v registru.
- cs-CZ: Jakmile je služba připravena ke komunikaci, vydá příkaz IOCTL_GENERICUSBFN_ACTIVATE_USB_BUS. Po aktivaci všech ovladačů třídy USB se rozšíření pro funkční třídu USB může připojit k hostitelskému počítači.
- Aby bylo možné přijímat oznámení USB, služba vydá IOCTL_GENERICUSBFN_BUS_EVENT_NOTIFICATION. Tento příkaz IOCTL se dokončí, když nastane nová událost USB. Mezi zvláštní zajímavé události (USBFN_EVENT) patří:
- UsbfnEventReset: Slouží k určení rychlosti připojeného zařízení USB.
- UsbfnEventConfigured: Služba teď může vydávat žádosti o přenos.
- UsbfnEventSetupPacket: Rozšíření třídy funkcí USB obdrželo paket nastavení specifický pro rozhraní (bmRequestType.Type == BMREQUEST_CLASS). Služba by měla odpovědět na instalační paket vydáním žádosti o přenos v kanálu 0, za kterým následuje požadavek handshake (IOCTL_GENERICUSBFN_CONTROL_STATUS_HANDSHAKE_OUT) v opačném směru na kanálu 0.
- Po přijetí události UsbfnEventConfigured může služba začít vydávat žádosti o přenos pomocí IOCTL_GENERICUSBFN_TRANSFER_IN, IOCTL_GENERICUSBFN_TRANSFER_IN_APPEND_ZERO_PKT a IOCTL_GENERICUSBFN_TRANSFER_OUT.