Я могу привести некоторые предположения.
Как вы говорите, сообщение об ошибке звучит довольно объяснительно.
OpenProcessToken кажется менее вероятным кандидатом, поскольку вы никогда напрямую не передадите ему размер области памяти.
GetKernelObjectSecurity или SetKernelObjectSecurity кажутся хорошими кандидатами. Я так понимаю, вы не вызываете их напрямую, поэтому вы не знаете, какая логика используется для передачи области памяти в эти функции. Возможно ли, например, что в одной из используемых вами библиотек есть буфер фиксированного размера для дескрипторов безопасности, и после того, как буфер исчерпан, он берет оставшийся размер буфера (например, ноль) и передает его в GetKernelObjectSecurity для вас?
(В общем, я ожидал бы, что это будет скорее из-за ошибки реализации во время выполнения WF, а не, например, из-за ошибки ОС.)