Skip to main content

Driver in Freepascal - Target NativeNT

Freepascal Driver - Target NativeNT

Based on ‘WRITE ONCE COMPILE ANYWHERE’ principle, Freepascal has the ability to make DLLs, Console and GUI Applications for multiple platforms followed by support for ARM Processors, etc. A very interesting feature that Freepascal (may) will have in the near future is the ability to compile Kernel Mode and or User Mode Device Drivers. Although the support is unavailable in the current stable release, we might one day in the near future be writing our own Device Drivers in Freepascal wth a built in support in some new future release of Freepascal, that is for now not possible with the Current Stable Release of Freepascal. The Official Page related to this new feature is: Target-NativeNT in Freepascal Wiki.  
I wrote this Article because I saw that many people were having problem(s) building the NativeNT FreepascalPackage provided in as the Trunk Build.
If you just want the Compiled Tools and don’t want to know the actual build process, scroll down to the end of this page and you will find a RAR Package (password: nativent). You will find the Kernel Mode RTL (Units), NativeNT ppc386 (renamed to ppc) and NativeNT fpcmake. With those, you can simply extract and immediately start building your own Kernel Mode Driver in FreePascal. The Details are provided within the Package in the ReadME File along with a Sample Driver. If you have Delphi installed on your PC, you can use DDDK (Delphi Driver Development Kit).
With that being said, let’s start.
The real problem starts for the beginners, completely new to the GnuWIN32 MAKE Utility. The GnuWIN32 MAKE Utility simply reads the MakeFile in the Current Directory and starts the build process without giving the user the pain of doing it all manually. Now, I already have Lazarus installed in my Computer which means I don’t have to install the GnuWIN32 MAKE Utility additionally. The Lazarus Package comes with it (%LAZARUS_DIR%\fpc\2.4.4\bin\i386-win32\make.exe).

Goto the Freepascal Development Page

Download FPCBUILD.ZIP ( >= 60 MB )
Don’t download the fpc.zip ( 31 MB ), it will only emit error(s) and doesn't contain the files required for NativeNT Build Process.

Extract the ZIP to say drive D: and you will have a folder D:\fpcbuild



Okay, so below is my MAKE.CMD to enter the required Directories and call the required MAKE.EXE:
@ECHO OFF
d:
ECHO { NAVIGATING TO FPCBUILD DIR  }
ECHO { CALLING LAZARUS_MAKE.EXE    }
cd fpcbuild\fpcsrc\compiler
d:\lazarus\fpc\2.4.4\bin\i386-win32\make

ECHO { NAVIGATING TO UTILS_FPCM    }
ECHO { CALLING LAZARUS_MAKE.EXE    }
cd..\utils\fpcm
d:\lazarus\fpc\2.4.4\bin\i386-win32\make

ECHO { COMPILING FREEPASCAL RTL    }
cd d:\fpcbuild\fpcsrc\rtl
d:\lazarus\fpc\2.4.4\bin\i386-win32\make FPC=d:\fpcbuild\fpcsrc\compiler\ppc386.exe OS_TARGET=nativent OPT=”-dKMODE”

ECHO { #EXITING COMMAND_PROMPT#    }
PAUSE

Now, lets understand it part by part:
@ECHO OFF
d:
ECHO { NAVIGATING TO FPCBUILD DIR  }
ECHO { CALLING LAZARUS_MAKE.EXE    }
cd fpcbuild\fpcsrc\compiler
d:\lazarus\fpc\2.4.4\bin\i386-win32\make
1.       Enters Drive D:
2.       Goes to the Folder fpcbuild\fpcsrc\compiler
3.       Calls GnuWIN32 MAKE Utility residing in %LAZARUS_DIR%\fpc\2.4.4\bin\i386-win32\make.exe(%LAZARUS_DIR% in my case is D:\Lazarus).
If you are aware, there is a MakeFile in fpcbuild\fpcsrc\compiler\ which comes with the FPCBUILD.ZIP. The MAKE.EXE reads the MakeFile and starts the build Process of the Compiler.
The Same goes for the FPCMAKE.EXE in (..\utils\fpcm\). 
Now, building the RTL, we need to choose between UserMode and KernelMode. I will choose KernelMode RTL Compilation as it runs under RING0.
ECHO { COMPILING FREEPASCAL RTL    }
cd d:\fpcbuild\fpcsrc\rtl
d:\lazarus\fpc\2.4.4\bin\i386-win32\make FPC=d:\fpcbuild\fpcsrc\compiler\ppc386.exe OS_TARGET=nativent OPT=”-dKMODE”
The Make is the path of GnuWIN32 Make Utility in Lazarus Directory, FPC=YOUR_NEW_PPC386.EXE,OS_TARGET=nativent (otherwise the i386-win32 RTL would be produced) and OPT=”-dKMODE” is the switch that makes the difference between UserMode RTL and KernelMode RTL. You cannot produce both at once.

As you can see, the build process is quite simple. It Compiles fine with few warnings here and there. But at last, you will get the ppc386.exe(2.16MB) in  \fpcbuild\fpcsrc\compiler\ppc386.exe, fpcmake.exe in\fpcbuild\fpcsrc\utils\rtl\units\i386-nativent.
Found this post useful ? If so, Click +1 and recommend this site on Google

Comments

Popular posts from this blog

உடல் எடையை குறைக்க வேண்டுமா ?

இன்றைய அவசர உலகின் மிக பெரிய பிரச்சனையாக இருப்பது உடல் எடை அதிகரிப்பது தான்.மனம் போன போக்கில் உணவு கட்டு பாடு இல்லாமல் கண்டதையும் உள்ளே தள்ளுவதும்,உக்காந்த இடத்திலேயே கணணி முன் நேரத்தை விரயமாக்குவதும் தான் இந்த பிரச்சனைக்கு மூல காரணமாகும். அது சரி இந்த பிரச்சனையை எப்படி இல்லாமல் செய்வது அல்லது உடல் எடையை எவ்வாறு குறைப்பது என்பதை பற்றி பாப்போம் , பல வருட ஆரய்சிக்குபின் மருத்துவர்கள்   உடல் எடைய குறைக்க மிகவும் சுலபமான உடற்பயிற்சியை கண்டுபிடித்துள்ளனர்.இது  100% பயனளிக்க கூடியது, எந்த இடத்திலும் எந்தநேரத்திலும் மிக சுலபமா செய்ய கூடிய உடற் பயிற்சியாகும்.இந்த உடற்பயிற்சிகள் படத்துடன் கீழே தரப்பட்டுள்ளது நீங்களும் முயற்சித்து பாருங்கள கண்டிப்பாக பலன் கிடைக்கும்... முதலில் நாற்காலியில் உட்கார்ந்து இட  பக்கம் பார்கவும் .. ..        அடுத்து  நாற்காலியில் உட்கார்ந்து வல  பக்கம் பார்கவும்  ....  நண்பர்கள் யாரவது மச்சி வாடா சின்ன பீஸ் ,இங்க பாரு சூப்பர் அய்டம்னு சொல்லி கால்ல விழுந்து கூப்பிட்டலோ மேற்கூறிய உடற் பயி...

(Loot again) Get Mi Earphones & Mi Backpack In Just Rs.1

How to Get Mi Band , Mi Earphones & Mi Backpack In Just Rs.1 1, First Of All Just  Click On Below Links 1 By 1  Click 1->  Mi City Backpack Dark Grey Minimalist sleek design  -In Just Rs.1 Click 2->  Mi Earphones Silver Dynamic bass sound  -In Just Rs.1 2. Now Open All Links 1 By 1 3. After Opening The Link Click On “ Click to Bring The Price Down ” Then Click “ I Want it too ” 4. Login into Your Mi Account ( Or Sign Up  –  New Mi Account Giving Huge Price drop Like Rs.50 Or Rs.70 Drop , So Recommend You to Make New Account ) 5. Now You will See 3 Products There In this  Mi 24 Hour Madness Sale  6. Click On “ Participate ” Now Button & Share The Link With Your Friends When Each Friend Click On Your Link , You Will See Some Price cut in Your Products… Finally After Enough Click Your Product Will be Available For Just Rs.1  7. Start Referring , Start Looting MI

10 Inventive 3D Website Designs

he  HTML5 Microzone  is presented by DZone and Microsoft to bring you the most interesting and relevant content on emerging web standards.  Experience all that the HTML5 Microzone has to offer on our  homepage  and check out the cutting edge web development tutorials on  Script Junkie ,  Build My Pinned Site , and the  HTML5 DevCenter . 3D Unique Website Designs Our website periodically produces interesting web roundups (of tutorials or designs or something else). Today I prepared a new design collection of 3D look websites. If you would like to start something new or you think about something completely new, this is the best place to start. You will be able to find here excellent examples of 3D websites. 1. Cube 2. Pneuservis Praha a autoservis Praha – HMR 3. The Amazing Spider-Man 4. 2Brand 5. The Story of Send 6. avles13 7. Dragon Interactive 8. Artfolio Art Gallery 9. Blocky Earth 10. Angry Birds...