CryptUnprotectData returns FALSE, please help me. I try with wstring also, but it returns FALSE too. In which direction to look the error in C++?
#include <wtypes.h>
#include <string>
#include <cstdint>
#include "dpapi.h"
#pragma comment(lib, "Crypt32")
int main()
{   
    string in = "fdggddgsgds";
    LPWSTR pDescrOut = NULL;
    DATA_BLOB inData, outData;
    inData.pbData = (BYTE*)in.data();
    inData.cbData = (DWORD)in.size();
    BOOL ok = CryptUnprotectData(&inData, NULL, NULL, NULL, NULL, 0, &outData);
    if (inData.pbData != NULL)
        LocalFree(inData.pbData);
    if (pDescrOut != NULL)
        LocalFree(pDescrOut);
    if (!ok)
        return NULL;
    char* str = (char*)malloc(outData.cbData + 1);
    memcpy(str, outData.pbData, outData.cbData);
    str[outData.cbData] = '\0';
    if (outData.pbData != NULL)
        LocalFree(outData.pbData);
    return 0;
}
 
    