Параметры, в которых в документации указано, что нужно пройти ноль, имеют две возможные причины:
Параметр не используется во всех существующих версиях Windows, но может быть использован для чего-то в будущем. Разработчик мог представить дополнительные функции, но у них не было времени для их реализации и т. Д.
Параметр используется для передачи недокументированной информации / флагов, которая вызывает некоторые частные функции внутри функции. Например, Windows 95 поддерживает недокументированные флаги в своих *Alloc
функциях, которые заставляют их выделять общую память, видимую всем процессам.
В любом случае, лучшая практика - просто следовать документации и проходить ноль.