2016-03-02 3 views
0

Мне нужно разделить ресурс между OEM-абстракционным слоем (OAL) и драйвером, который будет работать за пределами ядра. Чтобы поделиться ресурсом, я создам мьютекс. Когда я вызываю CreateMutex (или любую другую функцию из coredll.lib) из OAL, я получаю исключение прерывания предварительной выборки.Wince Call CreateMutex в ядре

Как создать мьютекс в OAL (пространство ядра) в Windows Compact 7?

+0

Хотя я не могу вам помочь, я думаю, вам будет лучше отредактировать и сократить ваш вопрос и просто спросить, как создать блокировку мьютекса. Я считаю ваш вопрос довольно трудным для чтения. –

+1

@Georg Schölly: Благодарим вас за отзыв. Я немного сузил вопрос. – Hawkez

ответ

2

Вы не можете использовать мьютексы, но вы можете использовать критический раздел. https://msdn.microsoft.com/en-us/library/ee478303.aspx Критический раздел работы между потоками внутри одного процесса, и если ваш драйвер является драйвером режима ядра, а не пользовательским, он будет работать внутри nk.exe, то же самое, что и OAL. Вместо того, чтобы делиться критической секцией (не так просто, поскольку они не могут быть названы), вы можете реализовать пару ячеек ядра IOCTL для входа/выхода.

+0

Благодарим вас за ввод. Я смог добавить IOCTL в OAL и использовать критический раздел так же, как вы сказали. Поскольку я использую Windows CE 7, я должен был явно разрешить IOCTL проходить через OAL в функции IOControl SRC/OAL/OALIOCTL/oalioctl.cpp. – Hawkez

+0

Извините, я забыл про часть oaliotcl.dll. Моя вина :( –