示例#1
0
LONG WINAPI Mine_RegQueryInfoKeyW(HKEY a0, LPWSTR a1, LPDWORD a2, LPDWORD a3, LPDWORD a4, LPDWORD a5, LPDWORD a6, LPDWORD a7, LPDWORD a8, LPDWORD a9, LPDWORD a10, struct _FILETIME* a11)
{
    if (CFilterMapper2::m_pFilterMapper2 && a0 == FAKEHKEY) {
        return ERROR_INVALID_HANDLE;
    }
    return Real_RegQueryInfoKeyW(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
}
示例#2
0
LSTATUS APIENTRY RegTree::RegQueryInfoKeyW(HKEY hKey, LPWSTR lpClass, LPDWORD lpcchClass, LPDWORD lpReserved, LPDWORD lpcSubKeys, LPDWORD lpcbMaxSubKeyLen, LPDWORD lpcbMaxClassLen, LPDWORD lpcValues, LPDWORD lpcbMaxValueNameLen, LPDWORD lpcbMaxValueLen, LPDWORD lpcbSecurityDescriptor, PFILETIME lpftLastWriteTime)
{
	RegPath path;
	if (IsVirtualKey(hKey))
	{
		RegNode *node = (RegNode*)((int)hKey & ~0x40000000);
		LoadRealChildren(node);
		
		if (lpClass != NULL)
			lpClass[0] = 0;
		if (lpcchClass != NULL)
			*lpcchClass = 0;
		if (lpcSubKeys != NULL)
			*lpcSubKeys = node->m_children.size();
		if (lpcbMaxSubKeyLen != NULL)
			*lpcbMaxSubKeyLen = 255;
		if (lpcbMaxClassLen)
			*lpcbMaxClassLen = MAX_PATH;
		if (lpcValues != NULL)
			*lpcValues = 0;
		if (lpcbMaxValueNameLen != NULL)
			*lpcbMaxValueNameLen = 16383;
		if (lpcbMaxValueLen != NULL)
			*lpcbMaxValueLen = 0xFFFFFFFF;

		return ERROR_SUCCESS;
	}
	else
		return Real_RegQueryInfoKeyW(hKey, lpClass, lpcchClass, lpReserved, lpcSubKeys, lpcbMaxSubKeyLen, lpcbMaxClassLen, lpcValues, lpcbMaxValueNameLen, lpcbMaxValueLen, lpcbSecurityDescriptor, lpftLastWriteTime);
}