TooTallNate / ref

Turn Buffer instances into "pointers"
http://tootallnate.github.com/ref
454 stars 142 forks source link

How to read a pointer as Struct? #135

Open lonelywolf4git opened 9 months ago

lonelywolf4git commented 9 months ago

Struct Definition

const FFI = require('ffi-napi')
const REF = require('ref-napi')
const StrucType = require('ref-struct-di')(REF)
const ALARM_ACCESS_CTL_STATUS_INFO = StrucType({
  dwSize: REF.types.int,
  nDoor: REF.types.int,
  stuTime: REF.refType(NET_TIME),
  emStatus: REF.types.int,
  szSerialNumber: ArrayType(REF.types.byte, Constants.NET_MAX_COMMON_256),
  bRealUTC: REF.types.bool,
  RealUTC: REF.refType(NET_TIME_EX)
})

The Library API:

const NetSDK = FFI.Library(NetSdkLibPath, {
  CLIENT_SetDVRMessCallBack: [REF.types.void, ['pointer', 'pointer']]
})

Callback API:

const alarmCallback = FFI.Callback(REF.types.void, [ 'pointer'], function ( pStuEvent,) {
// pStuEvent is instance of Struct "ALARM_ACCESS_CTL_STATUS_INFO"

})

Set Callback: NetSDKLib.NetSDK.CLIENT_SetDVRMessCallBack(alarmCallback, null)

My question: How to convert pointer "pStuEvent " to ALARM_ACCESS_CTL_STATUS_INFO instance?