对驱动完全不了解~由于要应用程序中控制LED灯,在驱动中找到了这么几个函数~
BSP的EBoot文件夹,loader.h中,
- C/C++ code
void OEMWriteDebugLED(WORD wIndex,DWORD dwPattern);
main.c文件中
- C/C++ code
void main(void){ //Clear LEDs. // [color=#FF0000]OEMWriteDebugLED(0,0x3F);[/color] //BootloaderMain(); //SpinForever();}
我试着把main函数中OEMWriteDebugLED中的参数改变,发现启动时LED灯的确改变了~~
问题是这是在驱动内调用,如果是在应用程序中该如何调用,求教~~
以及,我在dbgapi.h中找到了一个WriteDebugLED()函数,可以在应用程序中直接调用,但是似乎没有作用~而且这个只能找到定义~
BSP的Stepldr文件夹,utils.c中有个函数
- C/C++ code
void Led_Display(int data){ //Active is low.(LED on) //GPE3 GPE2 GPE1 GPE0 //nLED_8 nLED_4 nLED_2 nLED_1 // rGPBDAT = (rGPEDATA & ~(0xf<<0)) | ((~data & 0xf) <<0);}
这个函数跟OEMWriteDebugLED()又有什么关系?
------解决方案--------------------
既然驱动中可以调用,那就把这个函数再封装成DLL,然后应用程序调用这个DLL就可以了。。
------解决方案--------------------
我觉得
1 用KernelIOControl更好
不过应该要自己去加一个IO控制码,如IO_WRITE_LED
2 应该可以写一个最简单的流驱动
应用程序通过这个流驱动间接调用OEMWriteDebugLED
------解决方案--------------------
------解决方案--------------------
这个是内核调用的,不是你驱动去调用的。
楼主想用来干啥,不必拘泥与函数,自己写个驱动也可以啊