LsaICryptUnprotectData的参数

时间:2014-01-10 08:17:31

标签: c++

我正在尝试调用LsaICryptUnprotectData但是我得到错误代码87不支持的参数。有没有人能够成功调用此功能?想看一个示例函数调用

以下是我打电话的方式,

typedef int (WINAPI *LPFUN_LSAICRYPTUNPROTECTDATA) 
(
    LPBYTE encCredData,
    DWORD encCredDataSize,
    DWORD reserved1,
    DWORD reserved2,
    DWORD reserved3,
    DWORD reserved4,
    DWORD dwFlags,
    DWORD reserved5,
    LPBYTE *decCredData,
    LPDWORD decCredDataSize
);

 LPFUN_LSAICRYPTUNPROTECTDATA pLsaICryptUnprotectData = (LPFUN_LSAICRYPTUNPROTECTDATA) GetProcAddress (hLsasrv, "LsaICryptUnprotectData");
    if(!pLsaICryptUnprotectData) 
    {return GetLastError();}

HANDLE credfile = NULL;
LPBYTE buffer = NULL;
LPBYTE pDecrypted = NULL;
DWORD dwSize = 0;
DWORD cbsize=0;

credfile = CreateFile(filename,GENERIC_READ,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM,NULL);   


dwSize = GetFileSize(credfile,NULL);    
buffer=(LPBYTE)malloc(dwSize);
SetFilePointer(credfile,0,0,FILE_BEGIN);
DWORD credFileSize=0;
ReadFile(credfile,buffer,dwSize,&credFileSize,NULL)

if(!pLsaICryptUnprotectData( buffer, dwSize, 0,0,0,0, 0, 0, &pDecrypted, &cbsize) != NULL))
{
// do error handling
}

1 个答案:

答案 0 :(得分:0)

LsalCryptUnprotectData函数未记录,但是从this example开始,您可能尝试使用类似的参数:

cbSize = 0;
pLsaICryptUnprotectData ( buffer, dwSize, 0,0,0,0, 0x20000041, 0, 
    &pDecrypted, &cbSize);