gpt4 book ai didi

c - 自定义 Windows 身份验证包的实现 - LsaApUserLogonEx

转载 作者:行者123 更新时间:2023-11-30 16:30:50 48 4
gpt4 key购买 nike

我一直在研究 LSA auth 包,以便在 Windows 10 中引入我的自定义登录机制。到目前为止,我已经成功注册了 auth 包并让 LSA 调用了我的 LsaLogonUserEx 方法。现在我遇到的问题是如何准备 LsaApLogOnUser 方法的 OUT 参数。

NTSTATUS NTAPI
LsaApLogonUserEx(
IN PLSA_CLIENT_REQUEST ClientRequest,
IN SECURITY_LOGON_TYPE LogonType,
IN PVOID ProtocolSubmitBuffer,
IN PVOID ClientBufferBase,
IN ULONG SubmitBufferSize,
OUT PVOID *ProfileBuffer,
OUT PULONG ProfileBufferSize,
OUT PLUID LogonId,
OUT PNTSTATUS SubStatus,
OUT PLSA_TOKEN_INFORMATION_TYPE TokenInformationType,
OUT PVOID *TokenInformation,
OUT PUNICODE_STRING *AccountName,
OUT PUNICODE_STRING *AuthenticatingAuthority,
OUT PUNICODE_STRING *MachineName
);

特别是配置文件缓冲区和 token 信息。我应该只为它们分配内存还是需要正确确定这些值然后分配它们?

最佳答案

以下内容全部包含在文档中,尽管如果您不习惯的话会有点复杂。

  • TokenInformation:您返回的结构体类型由 TokenInformationType 参数决定,您也可以自行设置该参数。所以最后你决定返回什么类型的结构。这是list可能的类型和相关结构。基本上,它是 LSA_TOKEN_INFORMATION_V1LSA_TOKEN_INFORMATION_NULL

  • ProfileBuffer:请注意文档“此缓冲区的内容由身份验证包确定。”。因此,您可以在其中放入您认为对提供商/身份验证有用的任何内容。只需确保(引自文档)“身份验证包负责通过调用 AllocateClientBuffer 函数在客户端进程内分配 ProfileBuffer 缓冲区”。

一般来说,LsaApLogonUserEx 文档说明了有关您(作为一个包)何时需要分配(或释放!)参数/内存以及 LSA 何时为您执行此操作的一些信息。对于您特别关心的参数,它也这样做。

最后一点也是为什么需要对 ProfileBuffer 参数使用 AllocateClientBuffer 函数的原因:以便 LSA 可以使用匹配的“free”函数并不会损坏内存。

关于c - 自定义 Windows 身份验证包的实现 - LsaApUserLogonEx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50915719/

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com