Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: KInterruptSpinLock  (Прочитано 5001 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Anonymous
Гость
« : 04-11-2003 05:59 » 

Объясните, пожалуйста как работает и как использовать KInterruptSpinLock. В доке описание не него, черезвычайно краткое.
Проблема в том, что когда пытаюсь его инициализировать на
Пытаюсь инициализировать его в конструкторе девайса, машина вешается.
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #1 : 04-11-2003 06:48 » 

Это что класс из NuMega?
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #2 : 04-11-2003 06:56 » 

Если посмотреть на определение этого класса, то там только два конструктора и ф-ция Initialize, которые только и делают, что присваивают значение указателю m_pInterrupt, при такой операции зависаний быть не может.

class KInterruptSpinLock
{
// Construction
public:
   SAFE_DESTRUCTORS
   KInterruptSpinLock(void) : m_pInterrupt(NULL) {}
   KInterruptSpinLock(PKINTERRUPT pInterrupt) : m_pInterrupt(pInterrupt) {}
   VOID Initialize(PKINTERRUPT pInterrupt) { m_pInterrupt = pInterrupt; }

   VOID Invalidate(void) { m_pInterrupt = NULL; }
   BOOLEAN IsValid(void){ return (m_pInterrupt != NULL); }

// Methods
public:
   VOID Lock() { m_PreviousIrql = KeAcquireInterruptSpinLock(m_pInterrupt); }
   VOID Unlock() { KeReleaseInterruptSpinLock(m_pInterrupt, m_PreviousIrql); }

   KIRQL& OldIrql(void) {   return m_PreviousIrql; }

// Data
protected:
   PKINTERRUPT   m_pInterrupt;
   KIRQL      m_PreviousIrql;
};
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines