2012-09-01 12 views
5

Mam kod źródłowy sterownika i rozumiem go. Piszę aplikację w trybie użytkownika. Chcę zadzwonić do funkcji kierowcy. Jak mam to zrobić?Jak działa interfejs wywoływania aplikacji w C++?

jakiś kierowca kod nagłówki:

... 
BYTE ReadRegister(DEVICE_CONTEXT *pDevice, BYTE SlavAddr, BYTE SlavMode, WORD RegAddr, BYTE* pData, BYTE DataCont); 

BYTE WriteRegister(DEVICE_CONTEXT *pDevice, BYTE SlavAddr, BYTE SlavMode, WORD RegAddr, BYTE* pData, BYTE DataCont); 
... 

driver kod cpp sztuk:

BYTE ReadRegister(DEVICE_CONTEXT *pDevice, BYTE SlavAddr, BYTE SlavMode, WORD RegAddr, BYTE* pData, BYTE DataCont) 
{ 
..... 
} 

//----------------------------------------------------------------------------- 
BYTE WriteRegister(DEVICE_CONTEXT *pDevice, BYTE SlavAddr, BYTE SlavMode, WORD RegAddr, BYTE* pData, BYTE DataCont) 
{ 
.... 
} 

Odpowiedz

6

Nie można wywołać bezpośrednio w trybie jądra funkcja kierowca API. Zamiast tego należy użyć interfejsu API IOCTL.

scenariuszu pracy jest jak this:

  1. użytkownik-mode posty aplikacyjne Ioctl request, przekazując informacji na temat funkcji nazywać, jak również wskaźnik do swojego stosu argumentów.
  2. Sterownik trybu jądra wywołuje żądanie, kopiuje argumenty do własnego stosu, wywołuje funkcję i przekazuje wyniki do wywołującego w buforze wyjściowym IOCTL w .
  3. Wywołujący odbiera wyniki operacji IOCTL i postępuje zgodnie z po normalnym wywołaniu funkcji DLL.
+0

Dziękuję. Powinienem przeczytać kilka dokumentów na temat trybu jądra. – Wayman

Powiązane problemy