Hello,
I have been given a driver that is dynamically loaded at run-time (using CreateService(…, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, …) and StartService). I know that this is not the appropriate method but it is what I have been given.
This driver does IO port accesses (reads and writes) using inline assembly code (__outbyte, __inbyte) to CMOS memory area (0x70-0x71 and software SMI 0xB2).
Sometimes when the program is run, strange results are seen. I think this is because the OS is also accessing CMOS (for real time clock, etc.) at the same time. But, maybe not.
I would like to change this to use (READ|WRITE)_PORT_BYTE functions, but I think in order to do that I need to request (and receive) access to the IO port addresses, right?
And I think the only way I can request IO address access is through the logical configuration directives in the INF, right? (Which is not possible to do with a driver that is dynamically loaded like this one).
And I think I may not be given access to the CMOS ports anyway, right?
Thanks in advance!,
-John.