I have read that using memset is not always generated by the compiler prefer to use RtlZeroMemory
From Pelle's
Fills an object with a value.
Syntax: void __stosb(unsigned char *dst, unsigned char val, size_t num);
void __stosw(unsigned short *dst, unsigned short val, size_t num);
void __stosd(unsigned long *dst, unsigned long val, size_t num);
void __stosq(unsigned long long *dst, unsigned long long val, size_t num); (X64 only)
Declared in: <intrin.h>
The __stosb, __stosw, __stosd and __stosq function fills the object at dst with num byte, word, double-word, or quad-word values from val using the X86/X64 instruction REP STOSB, REP STOSW, REP STOSD, or REP STOSQ, respectively.
The __stosb, __stosw, __stosd and __stosq functions are only available as intrinsics.
Returns: Nothing
#code
https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/nf-wdm-rtlzeromemory
https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/nf-wdm-rtlfillmemory