Какие клиенты используют драйвер?

#c #c #windows-ce

#c #c #windows-ce

Вопрос:

Мне нужно, чтобы один из драйверов был в режиме ожидания (загружен на устройство, но вообще не использовался), чтобы получить некоторую статистику. Мне нужно убедиться, что никакие потоки / клиенты не используют драйвер. Я пытаюсь понять, есть ли способ добиться этого, чтобы я мог программно отключить клиентов / потоки, если таковые имеются, которые используют драйвер, чтобы убедиться, что он простаивает. Пожалуйста, предложите.

Комментарии:

1. Даже после вашей правки мне все еще не совсем ясно, что вам тогда нужно. Вы хотите знать, кто вызывает какой-то другой драйвер, для которого у вас нет исходного кода, и вы хотите остановить эти процессы? Это кажется очень недружелюбным.

2. Да, это то, что я хотел бы сделать. И это только для того, чтобы получить некоторую статистику для драйвера в целях тестирования, а не просто для того, чтобы отключить другие процессы для решения моих проблем :). Цель здесь состоит в том, чтобы увидеть, сколько ресурсов использует драйвер, когда он полностью простаивает (никого не обслуживает).

Ответ №1:

Если вы используете Windows Embedded Compact 7, вы могли бы использовать драйвер фильтра, который можно вставить перед тестируемым драйвером. Драйвер фильтра может предотвратить попадание любых вызовов на ваш драйвер, следовательно, фактически оставляя ваш драйвер бездействующим.

Драйверы фильтров — это новая функция в Compact 7, поэтому она не поможет вам, если вы используете более старую версию. Смотрите http://embedded101.com/Articles/Embedded101Article/tabid/75/ArticleId/28/Filter-Device-Drivers.aspx для введения для фильтрации драйверов.

Ответ №2:

Я не совсем понимаю. Если вы написали драйвер, вы являетесь привратником к каждой точке входа в драйвер. Вы можете разрешать / запрещать клиентам вызывать то, что вы хотите (например, семафор, мьютекс, логический флаг и т.д.). Вы хотели бы знать, «использует» ли кто-нибудь драйвер, потому что, возможно, кто-то вызвал Open, а не Close. Или такой метод, как Read или Write, был бы введен и еще не вышел.

Комментарии:

1. Спасибо @ctacke. Мне не следовало говорить «мой» драйвер, поскольку я не писал драйвер.