The documentation says nothing about dwBytes parameter being zero. Under debugging circumstances you can expect SERR_INVALIDCALL when passing zero, but for retail builds I wouldn't rely on it.

Generally speaking, you should always use common sense when working with API. Check special conditions *before* making API calls and do not test API against special circumstances.

Specifically, drivers have no obligations to check whether the parameters you have passed are correct or not. OpenGL is very forgiving in this case, but DirectX and other related APIs are not, so you need to take extra care yourself.