package Ġsample agent Ċ Ċ import Ġj v mt i .* Ċ import Ġkotlinx . c interop .* Ċ Ċ @ Suppress (" UNUSED _ PARAMETER ") Ċ fun Ġagent OnLoad ( vm Ptr : ĠLong , Ġoptions Ptr : ĠLong , Ġreserved Ptr : ĠLong ): Ġjint Ġ= ĊĠĠĠ Ġprint System Property Names ( vm Ptr )?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġprint (" Error : Ġ$ it ") ĊĠĠĠĠĠĠĠ ĠJNI _ ERR ĊĠĠĠ Ġ} Ġ?: ĠJNI _ OK Ċ Ċ fun Ġprint System Property Names ( vm Ptr : ĠLong ): ĠString ? Ġ= Ġmem Scoped Ġ{ ĊĠĠĠ Ġval Ġvm Ġ= Ġvm Ptr . to CP o inter < Java VM Var >() ?. point ed Ġ?: Ġreturn Ġ" No ĠVM Ġfound " ĊĠĠĠ Ġval Ġvm Fns Ġ= Ġvm . value ?. point ed Ġ?: Ġreturn Ġ" No ĠVM Ġfunctions Ġfound " ĊĠĠĠ Ġval Ġget Env Fn Ġ= Ġvm Fns . Get Env Ġ?: Ġreturn Ġ" No ĠGet Env Ġfunction Ġfound " ĊĊĠĠĠ Ġval Ġj v mt i Env Ptr Ġ= Ġalloc < CP o inter Var < jv mt i Env Var >>() ĊĠĠĠ Ġval Ġenv Result Ġ= Ġget Env Fn ( vm . ptr , Ġj v mt i Env Ptr . ptr . reinterpret (), ĠJVM TI _ VERSION ) ĊĠĠĠ Ġif Ġ( env Result Ġ!= ĠJNI _ OK ) Ġreturn Ġ" Get Env Ġfailed Ġwith Ġcode Ġ$ env Result " ĊĠĠĠĠĊĠĠĠ Ġval Ġj v mt i Fns Ġ= Ġj v mt i Env Ptr . point ed ?. value ?. point ed Ġ?: Ġreturn Ġ" No ĠJVM TI Ġfunctions Ġfound " ĊĠĠĠ Ġval Ġde alloc Fn Ġ= Ġj v mt i Fns . De allocate Ġ?: Ġreturn Ġ" No ĠDe allocate Ġfunction Ġfound " ĊĠĠĠ Ġval Ġprops Fn Ġ= Ġj v mt i Fns . Get System Properties Ġ?: Ġreturn Ġ" No ĠGet System Properties Ġfunction Ġfound " ĊĊĠĠĠ Ġval Ġcount Ġ= Ġalloc < jint Var >() ĊĠĠĠ Ġval Ġprop Names Ġ= Ġalloc < CP o inter Var < CP o inter Var < Byte Var >> >() ĊĠĠĠ Ġval Ġprop Err Ġ= Ġprops Fn ( jv mt i Env Ptr . value , Ġcount . ptr , Ġprop Names . ptr ) ĊĠĠĠ Ġif Ġ( prop Err Ġ!= ĠJVM TI _ ERROR _ NONE ) Ġreturn Ġ" Get System Properties Ġfailed Ġwith Ġcode Ġ$ prop Err " ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" Display ing Ġ${ count . value } Ġproperty Ġnames :") ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcount . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġyeah , Ġyeah , Ġthis Ġdoesn 't Ġfollow ĠJNI 's Ġmodified ĠUTF - 8 ... I 'm Ġlazy Ġfor Ġnow ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( prop Names . value ?. get ( i )?. to K String () Ġ?: Ġreturn Ġ" Failed Ġgetting Ġproperty Ġ$ i ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGot ta Ġde alloc Ġthe Ġprops Ġarray ĊĠĠĠĠĠĠĠ Ġval Ġde alloc Err Ġ= Ġde alloc Fn ( jv mt i Env Ptr . value , Ġprop Names . value ?. reinterpret ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( dealloc Err Ġ!= ĠJVM TI _ ERROR _ NONE ) Ġreturn Ġ" De allocate Ġfailed Ġwith Ġcode Ġ$ dealloc Err " ĊĠĠĠ Ġ} ĊĠĠĠ Ġnull Ċ } Ċ