Jump to content

    

Написать WDM Audio driver

Ищем человека, готового разработать WDM Audio driver для нашего железа. Драйвер должен будет поддерживать Win7...Win10.

Собственно говоря, непосредственно с железом драйвер работать не будет, а получать-отправлять данные будет через серверную часть с доступом к ней через shared memory. Сейчас серверная часть работает в user space. У серверной части есть и другие user space-клиенты.

 

Работа видится состоящей из нескольких этапов:

1. Заготовка драйвера, который определяется как аудиоустройство в системе. А потоки данных (ввод и вывод) имитирует работой с файлами. Собственно говоря, примерно такая заготовка и есть в WDK Samples, но нужно будет не просто ее собрать, а понять, какие именно переделки нужны будут на втором этапе.

2. Работа с файлами заменяется на работу с серверной частью. Сами данные лежат в shared memory (точнее в терминах Windows - File Mapping Object). Тут будет тонкость, связанная с тем, что есть примитивы синхронизации с серверной частью (сейчас там именованные мьютексы используются), которые, возможно, нужно будет переделать, дабы получить к ним доступ из ядра. Код клиента для user space предоставим, живой девайс для тестирования в полном объеме - тоже.

3. Необходимая параметризация - переключение всяких частот дискретизации, количества входов/выходов и прочего. Что-то надо делать на этапах 1/2, что-то отложить на более позднее время.

4. Алгоритм инсталляции/деинсталляции драйвера в систему, чтобы мы его могли прикрутить ко всей остальной нашей инфраструктуре развертывания.

5. Тестирование нами и исправление багов (понятное дело, что начнется оно где-то прямо с п.1) и закончится тут.

6. Придется уделить какое-то время потом на поддержку. Скорее всего, основные баги мы выловим при собственном тестировании, но при попадании к расширенному кругу тестеров скорее всего какие-то огрехи вылезут. Их надо будет исправить.

 

Территориально - крайне предпочтительно Украина. Так можно будет намного более проще решать возникающие вопросы плюс тестирование с живым девайсом.

 

Ну и ответ на главный вопрос жизни, вселенной и всего такого будет не 42, а, скажем, $1K за всю работу (до п.5 включительно). Пункт 6 - отдельный разговор, доп. оплата вполне обсуждаема, потому как по п.5 будем гонять и в хвост, и в гриву.

Share this post


Link to post
Share on other sites

"точнее в терминах Windows - File Mapping Object"

А ещё точнее, в стандарте POSIX - Named Shared Memory. И в вашем случае вполне возможно сделать этот "драйвер" кросс-платформенным.
За 1к - не берусь.

Share this post


Link to post
Share on other sites
6 hours ago, leocat said:

И в вашем случае вполне возможно сделать этот "драйвер" кросс-платформенным.

Это лишнее. Нужен только WDM и все. Остальное - наша забота.

Share this post


Link to post
Share on other sites

Для пункта .4 вам обязательно надо будет купить сертификат для подписывания кода, без него ваш драйвер не будет работать кроме как в режиме тестирования Windows (на x64 системах).
Не думали использовать UMDF ?
Если нужна будет консультацию кодеру по сборке, фаззингу и деплою драйвера - можете написать, помогу.

Edited by axiieflex

Share this post


Link to post
Share on other sites
8 hours ago, axiieflex said:

Для пункта .4 вам обязательно надо будет купить сертификат для подписывания кода, без него ваш драйвер не будет работать кроме как в режиме тестирования Windows (на x64 системах).

Да ну? Первый пришедший наглядный пример: драйвера VirtualBox. Пишут предупреждения, что нет подписи. Тычешь педаль "Всё равео установить" и вуаля! Работает без проблем.

Share this post


Link to post
Share on other sites
14 hours ago, axiieflex said:

Не думали использовать UMDF ?

а) Так один фиг я не умею что в WDM, что в UMDF. Все равно человек нужен.

б) А в Win7 оно сможет работать?

Share this post


Link to post
Share on other sites
36 минут назад, Rst7 сказал:

а) Так один фиг я не умею что в WDM, что в UDMF. Все равно человек нужен.

б) А в Win7 оно сможет работать?

б) работает начиная с Vista и выше

Share this post


Link to post
Share on other sites
6 часов назад, leocat сказал:

Да ну? Первый пришедший наглядный пример: драйвера VirtualBox. Пишут предупреждения, что нет подписи. Тычешь педаль "Всё равео установить" и вуаля! Работает без проблем.

Вообще вас спрашивают не потому-что нету подписи, а спрашивают доверять ли этому издателю - это разные вещи. Вы не правы.
ВСЕ драйвера VirtualBox подписаны, причем также подписаны расширенной подписью с сигнатурой Microsoft Hardware.

 

iWJJOf4.png

Share this post


Link to post
Share on other sites

axiieflex,
Да, подписаны. Но... Oracle Corporation, никак не $M.

Share this post


Link to post
Share on other sites
1 час назад, leocat сказал:

axiieflex,
Да, подписаны. Но... Oracle Corporation, никак не $M.

Установите последнюю версию VirtualBox, зайдите в папку drivers, натравите на файл VBoxDrv.sys утилиту signtool из комплекта Windows SDK and DDK 

 

signtool verify /debug /v /all VBoxDrv.sys

Verifying: VBoxDrv.sys


Signature Index: 0 (Primary Signature)
Hash of file (sha1): 607B215503738D6A686EE4B46B8694F0E6366FB3

Signing Certificate Chain:
    Issued to: DigiCert Assured ID Root CA
    Issued by: DigiCert Assured ID Root CA
    Expires:   Mon Nov 10 04:00:00 2031
    SHA1 hash: 0563B8630D62D75ABBC8AB1E4BDFB5A899B24D43

        Issued to: DigiCert Assured ID Code Signing CA-1
        Issued by: DigiCert Assured ID Root CA
        Expires:   Tue Feb 10 16:00:00 2026
        SHA1 hash: 409AA4A74A0CDA7C0FEE6BD0BB8823D16B5F1875

            Issued to: Oracle Corporation
            Issued by: DigiCert Assured ID Code Signing CA-1
            Expires:   Wed Mar 23 16:00:00 2022
            SHA1 hash: 6F474206BCBB391BB82BA9E5DC0302DEF37AEBBE

The signature is timestamped: Mon May 13 17:15:31 2019

Timestamp Verified by:
    Issued to: Thawte Timestamping CA
    Issued by: Thawte Timestamping CA
    Expires:   Fri Jan 01 03:59:59 2021
    SHA1 hash: BE36A4562FB2EE05DBB3D32323ADF445084ED656

        Issued to: Symantec Time Stamping Services CA - G2
        Issued by: Thawte Timestamping CA
        Expires:   Thu Dec 31 03:59:59 2020
        SHA1 hash: 6C07453FFDDA08B83707C09B82FB3D15F35336B1

            Issued to: Symantec Time Stamping Services Signer - G4
            Issued by: Symantec Time Stamping Services CA - G2
            Expires:   Wed Dec 30 03:59:59 2020
            SHA1 hash: 65439929B67973EB192D6FF243E6767ADF0834E4

Signature Index: 1
Hash of file (sha256): 62DEF2295D28261828C8717FC6A80CDC6D93455C6A8AD0EDCE9924461E5B627B

Signing Certificate Chain:
    Issued to: Microsoft Root Certificate Authority 2010
    Issued by: Microsoft Root Certificate Authority 2010
    Expires:   Sun Jun 24 02:04:01 2035
    SHA1 hash: 3B1EFD3A66EA28B16697394703A72CA340A05BD5

        Issued to: Microsoft Windows Third Party Component CA 2014
        Issued by: Microsoft Root Certificate Authority 2010
        Expires:   Tue Oct 16 00:41:27 2029
        SHA1 hash: 1906DCF62629B563252C826FDD874EFCEB6856C6

            Issued to: Microsoft Windows Hardware Compatibility Publisher
            Issued by: Microsoft Windows Third Party Component CA 2014
            Expires:   Sat Sep 07 01:30:32 2019
            SHA1 hash: 2629E86AAE6EB9C9ADCC1C548D601A50FD96927A

The signature is timestamped: Mon May 13 19:18:44 2019

Timestamp Verified by:
    Issued to: Microsoft Root Certificate Authority 2010
    Issued by: Microsoft Root Certificate Authority 2010
    Expires:   Sun Jun 24 02:04:01 2035
    SHA1 hash: 3B1EFD3A66EA28B16697394703A72CA340A05BD5

        Issued to: Microsoft Time-Stamp PCA 2010
        Issued by: Microsoft Root Certificate Authority 2010
        Expires:   Wed Jul 02 01:46:55 2025
        SHA1 hash: 2AA752FE64C49ABE82913C463529CF10FF2F04EE

            Issued to: Microsoft Time-Stamp Service
            Issued by: Microsoft Time-Stamp PCA 2010
            Expires:   Sat Jan 11 01:14:28 2020
            SHA1 hash: D0D47BA23CC03219A7A1F6C1F0A89DE2ABB2C5D5

Signature Index: 2
Hash of file (sha256): 62DEF2295D28261828C8717FC6A80CDC6D93455C6A8AD0EDCE9924461E5B627B

Signing Certificate Chain:
    Issued to: VeriSign Class 3 Public Primary Certification Authority - G5
    Issued by: VeriSign Class 3 Public Primary Certification Authority - G5
    Expires:   Thu Jul 17 03:59:59 2036
    SHA1 hash: 4EB6D578499B1CCF5F581EAD56BE3D9B6744A5E5

        Issued to: Symantec Class 3 SHA256 Code Signing CA
        Issued by: VeriSign Class 3 Public Primary Certification Authority - G5
        Expires:   Sun Dec 10 03:59:59 2023
        SHA1 hash: 007790F6561DAD89B0BCD85585762495E358F8A5

            Issued to: Oracle Corporation
            Issued by: Symantec Class 3 SHA256 Code Signing CA
            Expires:   Fri Mar 19 03:59:59 2021
            SHA1 hash: 173A19BF8E6272BE2504D308AA68B1B00E03332C

The signature is timestamped: Mon May 13 17:15:32 2019

Timestamp Verified by:
    Issued to: VeriSign Universal Root Certification Authority
    Issued by: VeriSign Universal Root Certification Authority
    Expires:   Wed Dec 02 03:59:59 2037
    SHA1 hash: 3679CA35668772304D30A5FB873B0FA77BB70D54

        Issued to: Symantec SHA256 TimeStamping CA
        Issued by: VeriSign Universal Root Certification Authority
        Expires:   Sun Jan 12 03:59:59 2031
        SHA1 hash: 6FC9EDB5E00AB64151C1CDFCAC74AD2C7B7E3BE4

            Issued to: Symantec SHA256 TimeStamping Signer - G3
            Issued by: Symantec SHA256 TimeStamping CA
            Expires:   Fri Mar 23 03:59:59 2029
            SHA1 hash: A9A4121063D71D48E8529A4681DE803E3E7954B0

Number of signatures successfully Verified: 1

Number of warnings: 0

Number of errors: 2

Обратите внимание на 2 запись в цепочке сертификатов - Microsoft Windows Hardware Compatibility Publisher, если не знаете что это такое - то читайте - https://docs.microsoft.com/en-us/windows-hardware/design/compatibility/whcp-specifications-policies

Edited by axiieflex

Share this post


Link to post
Share on other sites

Всем спасибо за обсуждение, человек найден.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.