DWORD-aligned

系统:Windows8.1 64bit CS

这两天正好看到InitializeACL()  msdn.microsoft.com/en-us/library/windows/desktop/aa378853(v=vs.85).aspx

其中nAclLength [in]要求". In addition, this value must be DWORD-aligned. For more information about calculating the size of anACL, see Remarks.",而后面的例子是这么做align的

// Align cbAcl to a DWORD.
    cbAcl = (cbAcl + (sizeof(DWORD) - 1)) & 0xfffffffc;

那到底什么是aligned呢,为什么cbAcl要那么计算呢??


幸好有【ri_aje】的回答:

 cbAcl = (cbAcl + (sizeof(DWORD) - 1)) & 0xfffffffc;
cbAcl要被DWORD-aligned的意思就是能被4整除     在windows 32位、64位上DWORD都是4字节(64位上有个单独的DWORD64),即能被4整除。

http://stackoverflow.com/questions/39419/visual-c-how-large-is-a-dword-with-32-and-64-bit-code

任意数X要做到能被DWORD/4整除要做2步(类似可以扩展到WORD,DWORD64吧)

1.  X=X+(sizeof(DWORD)-1)    假设X∈【N*4 , (N+1)*4 ),N属于正整数。 X加上sizeof(DWORD)-1的目的是为了得到不小于X的并能被4整除的N*4或(N+1)*4

2. X=X & 0xfffffffc   与0xfffffffc的目的就是让X能被4整除。 若X==N*4,那最后我们得到N*4; 若X>N*4,那最后我们得到(N+1)*4


根据MSDN的DWORD-aligned定义  http://msdn.microsoft.com/en-us/library/aa369366%28v=vs.85%29.aspx

Each data structure in a value list must begin on a DWORD boundary. This means that the distance (in bytes) between the start of the value list buffer and the start of any data structure is always an even multiple of sizeof(DWORD).

这里要注意的是

1.   “begin on a DWORD boundary.”:DWORD是4字节,故DWORD bounday就是能被4整除的地方

2. "an even multiple of" :这里even不是偶数的意思,而是作为adv. "used to emphasize something unexpected or surprising",强调multiple of,即整数倍sizeof(DWORD)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Procrutes-Aligned,中文为普鲁克里特斯对准,是一个术语,常用于描述某种标准或规范下的对齐或一致性。 源自希腊神话中的普鲁克里特斯(Procrutes),他是一个残忍的强盗。他有一张铁床,他会邀请过路人入住。如果过客身高超过床的长度,普鲁克里特斯会迫使过客削下自己的脚或头,使其适配床的大小。相反,如果过客身材不够床的长度,普鲁克里特斯会折磨过客直到符合床的大小。 因此,当我们提到"Procrutes-Aligned"时,意味着我们正在寻求一种对齐或调整以满足某种预定的规范或标准。这可以应用于各种领域和情境,如设计、工程、软件开发等。 在设计领域,一个Procrutes-Aligned的设计可能是指遵循特定的尺寸、比例或几何关系以满足特定的审美或功能要求。这意味着设计必须进行某种调整或修改,以在整体上符合这些要求。 在工程领域,Procrutes-Aligned可能指遵循特定的标准、规范或安全要求来进行设计和建造。这意味着工程必须按照这些要求进行调整,以确保达到特定的性能和质量标准。 在软件开发中,Procrutes-Aligned可以指遵循特定的编码规范、设计模式或软件工程实践来编写代码。这意味着开发人员必须符合这些规范和标准,以确保代码的合理性、可读性和可维护性。 总之,Procrutes-Aligned是指根据特定的规范、标准或要求进行调整和对齐的过程。无论是在设计、工程还是软件开发中,这种对齐和调整是为了确保最终产品或结果能够达到特定的要求和期望。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值