Windows 为什么函数LdrRegisterDllNotification的第一个参数必须为零?

Windows 为什么函数LdrRegisterDllNotification的第一个参数必须为零?,windows,dll,ntdll,Windows,Dll,Ntdll,如Microsoft文档中所述,的参数Flags必须为零,但没有提供进一步的解释。如果唯一接受的值为零,定义此参数的目的是什么?如果改为传递非零值,会发生什么情况 文档中告诉您通过零的参数有两个可能的原因: 该参数在所有现有Windows版本中都未使用,但将来可能会用于某些用途。开发人员可能已经设想了额外的功能,但是他们没有时间来实现它们等等 该参数用于传递触发函数内某些私有功能的未记录信息/标志。例如,Windows 95在其*Alloc函数中支持未记录的标志,使它们分配所有进程可见的共享内存

如Microsoft文档中所述,的参数
Flags
必须为零,但没有提供进一步的解释。如果唯一接受的值为零,定义此参数的目的是什么?如果改为传递非零值,会发生什么情况

文档中告诉您通过零的参数有两个可能的原因:

  • 该参数在所有现有Windows版本中都未使用,但将来可能会用于某些用途。开发人员可能已经设想了额外的功能,但是他们没有时间来实现它们等等

  • 该参数用于传递触发函数内某些私有功能的未记录信息/标志。例如,Windows 95在其
    *Alloc
    函数中支持未记录的标志,使它们分配所有进程可见的共享内存


  • 无论哪种方式,最佳实践都是遵循文档并通过零

    保留所有非零值。如果您传递了一个非零值,那么它可能会在未来版本的Windows中停止工作,因为该非零值将有一些新的含义。@RaymondChen您也可以发布注释answer@Wander3r它是所有其他参数的dup“参数被记录为‘保留,必须为零’,那么为什么有它?”问题。保留必须为零表示保留,必须为零