Управление Состоянием Канала
Состояние канала USBD имеет два компонента:
- Состояние Хоста
- "Отраженное" состояния конечной точки
- Активный. Стратегия канала была установлена, и канал способен передать данные. Клиент может сделать запрос относительно того, ожидает ли какой либо IRP обработки в специфическом канале. Каналы, для которых нет ни одного ожидающего обработки IRP, рассматриваются как, находящиеся в активном состоянии, пока они способны принять новые IRPs.
- Остановленный. Произошла ошибка в канале. Это состояние может также быть результатом отражения сигнала соответствующей остановленной конечной точки на устройстве.
- Idle. Канал больше не будет принимать IRPs. Конечная точка должна также быть в состоянии idle.
- Прерывание выполнения в канале. Все IRPs, планируемый для канала немедленно удаляются и возвращаются клиенту с состоянием указывающим, что они были прерваны. На состояние хоста и на отраженное состояние конечной точки канала это не воздействует.
- Сброс канала. IRPs канала прерываются. Хоста переводится в активное состояние. Если отраженное состояние конечной точки должно быть изменено, оно должно явно управляться клиентом USBD.
Всякий раз, когда сообщено состояние канала, будет определено значение обоих компонент. Состояние канала, отраженное от конечной точки - результат нахождения конечной точки в специфическом состоянии. (The pipe status reflected from the endpoint is the result of the endpoint being in a particular state.) Клиент USBD управляет состоянием канала как сообщено USBD.(The USBD client manages the pipe state as reported by the USBD.) Для любого состояния канала, отраженного от конечной точки, клиент должен также взаимодействовать с конечной точкой, чтобы изменить состояние.(For any pipe state reflected from the endpoint, the client must also interact with the endpoint to change the state.)
USBD канал находится в точно одной из следующей состоянии:
Клиенты USBD должен быть способны установить определенный канал в idle или активное состояние из любого состояния, описанного выше. Клиенты также должны быть способны установить конечную точку в активное или idle состояние. Дополнительно, клиенты управляют состоянием канала следующими способами: