What is the maximum value that a semaphore can have? The CreateSemaphore takes in two LONGs for the inital and maximal value but passing in std::numeric_limits<LONG>::max() causes CreateSemaphore to fail (returning NULL).

Is there a documented max or #define magic constant defining the maximal count?