āļāļēāļāļāļ§āļēāļĄāđāļāļīāļĄāļāļāļāļāļĩāđāđāļĨāđāļ§āļāļĄāđāļāļĒāđāļāļĩāļĒāļāđāļĢāļ·āđāļāļāļāļēāļĢāļŠāļĢāđāļēāļ Node.js Module āļāđāļ§āļĒ C++ āļĄāļēāļāļĩāļāļķāļāđāļĨāđāļ§ āđāļāđāļāļķāļāļāļĒāđāļēāļāļāļąāđāļāļāđāļēāđāļĢāļē
– āļĄāļĩ C++ Library āļāļĒāļđāđāđāļĨāđāļ§āļĨāđāļ°
– āļŦāļĢāļ·āļāļāļĒāļēāļāļāļģāđāļŦāđ Node āļŠāļēāļĄāļēāļĢāļāđāļĢāļĩāļĒāļāđāļāđāļāļēāļāļāļ§āļ System API āđāļāļĒāļāļĩāđāđāļĄāđāļāļĒāļēāļāļĻāļķāļāļĐāļēāļāļēāļĢāđāļāļĩāļĒāļ Node Module āđāļāļ Native
āļāļĄāļāđāđāļāđāļāļāļ§āđāļēāļĄāļĩ Community āļāļĩāđāđāļāđāļāļąāļāļāļē Framework āļĄāļēāļāļąāļ§āļāļķāļāļāļķāđāļāļ§āļąāļāļāļĩāđāđāļĢāļēāļāļ°āļĄāļēāļāļđāļāļāļķāļāļāļąāļ āļāļąāđāļāļāđāļāļ·āļ Node-ffi āļāļķāđāļāļĒāđāļāļĄāļēāļāļēāļ Foreign Function Interface
Node-ffi āļāļąāđāļāđāļāđāļ Module āļāļĩāđāļāļģāļŦāļāđāļēāļāļĩāđāđāļāđāļāļāļąāļ§āļāļĨāļēāļāđāļāļāļēāļĢāļāļģāļāļēāļĢāļāļīāļāļāđāļāļĢāļ°āļŦāļ§āđāļēāļ JavaScript Code āđāļāļāļĩāđ C++ Library āđāļāļĒāļāļĩāđāđāļĢāļēāđāļĄāđāļāđāļāļāđāļāļĩāļĒāļ Native Module āđāļāļ āļāļĢāļ°āļĄāļēāļāļĢāļđāļ Diagram āļāđāļēāļāļĨāđāļēāļāļāļĢāļąāļ

āđāļĢāļēāļĄāļēāļĨāļāļāļāļđāļāļēāļĢāđāļāđāļāļēāļāļāļąāļāļāļĩāļāļ§āđāļēāļāļĢāļąāļ
āļāđāļāļāļāļ·āđāļāđāļĢāļēāļĄāļĩ C++ Library āļāļĩāđāđāļāđāļ DLL āļāļĩāđāļāđāļāļāļāļēāļĢāļāļ°āđāļĢāļĩāļĒāļ āļāļķāđāļāļāļĄāļĨāļāļāđāļāļĩāļĒāļāļĄāļēāđāļāļāļāđāļēāļĒāđāļāļ·āļ dll āļāļĩāđāļĄāļĩ function āđāļāļāļēāļĢ āļāļķāļāļāđāļē Version āļāļāļ OS
extern "C" DLLIMPORT int getVersion()
{
DWORD dwVer = ::GetVersion();
DWORD majorVer = (DWORD)(LOBYTE(LOWORD(dwVer)));
return majorVer;
};
āļāļķāđāļ API ::GetVersion āļāļąāđāļāđāļāđāļāļāļāļ Windows SDK āļāļĢāļąāļ āļāļķāđāļāļŠāļģāļŦāļĢāļąāļāļāļąāđāļ C++ āļāļĄāđāļāđāļāļģāļāļēāļĢ Â Compile āļāļāļāļĄāļēāđāļāđāļ dll āļāļ·āđāļ dev.dll
āļāļĩāļāļĩāđāļĄāļēāļĨāļāļāļāļđāļŠāđāļ§āļāļāļĩāđāļŠāļģāļāļąāļāļāļāļāđāļĢāļēāļāđāļāļ·āļāļāļąāđāļ JavaScript
var ffi = require('ffi');
var devModule = ffi.Library('dev', {
'getVersion': [ 'int', [] ]
});
console.log('Windows version : ' + devModule.getVersion());
āļāļēāļ Code āļāļĩāđāļāđāļĄāļĩ 3 āļŠāđāļ§āļāļŦāļĨāļąāļāđāļāļĢāļąāļ
- require module ‘ffi’
- āļāļĢāļ°āļāļēāļĻāļāļēāļĢāļāļģ function binding
ffi.Library('dev', { 'getVersion': [ 'int', [] ]2.1 āļāļģāļāļēāļĢ binding āļāļąāļāđāļāļĨāđ library āļāļ·āđāļ dev.dll
2.2 āļāļģāļāļēāļĢ binding āļāļąāļ function āļāļ·āđāļ getVersion āđāļāļĒāļĄāļĩ ‘int’ āđāļāđāļ Type āļāļāļ Return Value
2.3 Function getVersion āļāļĩāđāđāļĄāđāļĄāļĩ parameter āđāļĨāļĒāđāļŠāđāđāļāđāļ [] - āđāļĢāļĩāļĒāļāđāļāđ ffi āļāđāļ§āļĒ Â devModule.getVersion()
āļāļĨāļāļāļāļāļēāļĢāļĢāļąāļāļāđāđāļāđāļāļāļąāļāļāļĩāđāļāļĢāļąāļāļāļ·āļāđāļāđāļāđāļē ’10’ āļĄāļēāļāļēāļ getVersion

āļāļāļāļāļēāļāļāļĩāđāđāļĢāļēāļĒāļąāļāļŠāļēāļĄāļēāļĢāļāļāļĢāļ°āļāļēāļĻāļāļēāļĢāļāļģ binding āļāļĩāļĨāļ°āļŦāļĨāļēāļĒāđ function āļāđāđāļāđāđāļŦāļĄāļ·āļāļāļāļąāļāļāļĢāļąāļ(āļāļāļāļāļļāļāļēāļāļīāđāļĄāđāđāļāļ§āđ Code āļāļąāđāļ C++ āļāļĩāđāđāļāļĩāļĒāļāđāļāļīāđāļĄāđāļāļ·āđāļāļāļķāļāļāđāļē Minor,Build Version) āđāļāđāļ
var devModule = ffi.Library('dev', {
'getVersion': [ 'int', [] ] ,
'getMinorVersion' : [ 'int', [] ],
'getBuildVersion' : [ 'int', [] ]
});
console.log('Windows version : ' + devModule.getVersion());
console.log('Minor version : ' + devModule.getMinorVersion());
console.log('Build version : ' + devModule.getBuildVersion());
āļāļĨāļāļēāļĢāļĢāļąāļāļāđāļāļđāļāļĩāļāļĢāļąāļāđāļĨāļ°āļāļĢāļāļāļąāļ System Info āļāļĢāļīāļāđāļāļ° ð

āļŠāļĢāļļāļ : node-ffi āļāđāļēāļāļ°āđāļāđāļāļāļĩāļāļŦāļāļķāđāļāļāļēāļāđāļĨāļ·āļāļāļŠāļģāļŦāļĢāļąāļāļāļāļāļĩāđāđāļāļĩāļĒāļ Node.Js āļāđāļ§āļĒ Context āļāļēāļāļāļĒāđāļēāļāļāļĩāđāļāđāļāļāļāļīāļāļāđāļāļāļąāļ System āļŦāļĢāļ·āļ OS āļĢāļ°āļāļąāļ Low Level (āđāļŦāļĄāļ·āļāļāļāļĄ..) āđāļāļĒāļāļĩāđāđāļĢāļēāļāļąāđāļāđāļĄāđāļāđāļāļāļĄāļēāļāļēāļĢāđāļĢāļĩāļĒāļāļĢāļđāđāļāļēāļĢāđāļāļĩāļĒāļ Node Module āđāļāļ Native āļāļĩāđāļāļēāļāļāļ°āļĄāļĩāļāļ§āļēāļĄāļāļąāļāļāđāļāļāļāļ§āđāļēāļāļąāđāļāđāļāđāļāđāļāļēāļĢāļāļģ Mapping āļāļ§āļ Data Types āļĢāļ§āļĄāļāļķāļāļāļēāļĢāļĄāļēāļāļąāđāļāļĻāļķāļāļĐāļē V8 API  āļāļķāđāļāļāļĄāļāļīāļāļ§āđāļē node-ffi āļāļēāļāļāļ°āļĄāļĩāļāļĨāļāļĢāļ°āļāļāļāļąāļ Performance āđāļāļāļēāļĢ call function āļāđāļēāļ āđāļāđāļāļĄāļāđāļĒāļąāļāđāļĄāđāđāļāđāļĨāļāļāļ§āļąāļ āļāļąāđāļāļāļĩāđāļāļąāđāļāļāļąāđāļāđāļāļĢāļĄāļĩāļāđāļāļĄāļđāļĨāđāļāļīāđāļĄāļāđāđāļāļĢāđāļāļąāļāđāļāđāļāļĢāļąāļ