关于SID_AND_ATTRIBUTES
struct _SID_AND_ATTRIBUTES *
copy_sid_a(SID_AND_ATTRIBUTES *sid_a, ULONG sid_a_size)
{
SID_AND_ATTRIBUTES *result;
if (sid_a == NULL)
return NULL;
result = (SID_AND_ATTRIBUTES *)malloc_np(sid_a_size);
if (result == NULL)
return NULL;
memcpy(result, sid_a, sid_a_size);
result->Sid = (char *)result + ((char *)(sid_a->Sid) - (char *)sid_a);
return result;
}
求教result->Sid = (char *)result + ((char *)(sid_a->Sid) - (char *)sid_a);这句话什么意思?((char *)(sid_a->Sid) - (char *)sid_a);表达了什么?
[解决办法]
首先申明,仅代表自己的一种看法,不一定正确
求教result->Sid = (char *)result + ((char *)(sid_a->Sid) - (char *)sid_a);这句话什么意思?((char *)(sid_a->Sid) - (char *)sid_a);表达了什么?
(char *)result=当前的内存地址(相对地址)
((char *)(sid_a->Sid) - (char *)sid_a)==sid_a->Sid在struct _SID_AND_ATTRIBUTES中的偏移
连起来就是,result->Sid=这个变量在当前内存中的地址