Are you sure your compiler and standard library support that particular specifier? It is new in C99.
Microsoft for example doesn't support it, according to this:
http://msdn.microsoft.com/en-us/library/xdb9w69d.aspx
This means that the hh
is probably interpreted as a single h
and it therefore expects a pointer to unsigned short
, not unsigned char
.