Hi Maarten,
+ if (pbHash && *pcbHash < 20) + { + SetLastError(ERROR_INSUFFICIENT_BUFFER); + return FALSE; + }
That's not correct, *pcbHash must be set to 20 if it's too small.
+ while (ReadFile(hFile, tempbuffer, TEMP_BLOCK_SIZE, &readbytes, NULL) && readbytes) + CryptHashData(hash, tempbuffer, readbytes, 0);
You return TRUE if ReadFile fails, which is unlikely to be correct.
Thanks, --Juan