注册 登录
编程论坛 汇编论坛

SID_NAME_USE在windows.inc中怎么添加

W32Asm 发布于 2012-02-20 16:33, 802 次点击
各位大大,我想问一下有谁用过LookupAccountName这个API函数,在32位汇编情况下,我想用这个函数,但是它的最后一个参数是指向一个SID_NAME_USE.我仔细查看了MSDN的介绍,好像这个不是STRUCT.所以不知道怎么添加到WINDOWS.INC中。

但是我的windows.inc没有含有这个SID_NAME_USE.所以请各位大大帮忙。
3 回复
#2
zklhp2012-02-20 17:10
BOOL WINAPI LookupAccountName(
  __in_opt   LPCTSTR lpSystemName,
  __in       LPCTSTR lpAccountName,
  __out_opt  PSID Sid,
  __inout    LPDWORD cbSid,
  __out_opt  LPTSTR ReferencedDomainName,
  __inout    LPDWORD cchReferencedDomainName,
  __out      PSID_NAME_USE peUse
);

typedef enum _SID_NAME_USE {
  SidTypeUser             = 1,
  SidTypeGroup,
  SidTypeDomain,
  SidTypeAlias,
  SidTypeWellKnownGroup,
  SidTypeDeletedAccount,
  SidTypeInvalid,
  SidTypeUnknown,
  SidTypeComputer,
  SidTypeLabel
} SID_NAME_USE, *PSID_NAME_USE;

汇编里面可以说没有类型的概念 这里返回的枚举类型的指针其实就是一个指向双字的指针(PSID_NAME_USE) 只不过这个双字的值是上面的那些 SidTypeUser 一类的

而 SidTypeUser 的本质不过是数字 也就是 1 2 3 这样的

得到值 与上面的比较就可以了

SID_NAME_USE 也可以扩充到windows.inc里 也可以直接定义在程序中

SidTypeUser = 1
SidTypeGroup = 2
……

就可以了
#3
zklhp2012-02-20 17:11
你问这个说明对C里的枚举类型理解不深 通过汇编理解了这个也不枉学汇编啊 呵呵
#4
W32Asm2012-02-21 10:39
感谢zklhp老大,我对C语言不熟悉,可以说不懂。所以不知道C语言里面有枚举类型这个概念。

[ 本帖最后由 W32Asm 于 2012-2-21 11:09 编辑 ]
1