https://git.reactos.org/?p=reactos.git;a=commitdiff;h=1e28d4d92bfa1e69b4db6…
commit 1e28d4d92bfa1e69b4db6eefae9e8cbff498c846
Author: Timo Kreuzer <timo.kreuzer(a)reactos.org>
AuthorDate: Sun Dec 9 20:52:54 2018 +0100
Commit: Pierre Schweitzer <pierre(a)reactos.org>
CommitDate: Sun Dec 9 20:54:41 2018 +0100
[TCPIP] Implement InfoTdiQueryGetATInfo
This implements a case for InfoTdiQueryInformationEx. It's based on wild guesses,
but it helps to make Windows 2003 lsass not fail.
---
drivers/network/tcpip/tcpip/info.c | 37 +++++++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
diff --git a/drivers/network/tcpip/tcpip/info.c b/drivers/network/tcpip/tcpip/info.c
index 6cc44d5985..b1f1c4d422 100644
--- a/drivers/network/tcpip/tcpip/info.c
+++ b/drivers/network/tcpip/tcpip/info.c
@@ -180,6 +180,38 @@ TDI_STATUS InfoTdiQueryListEntities(PNDIS_BUFFER Buffer,
return TDI_SUCCESS;
}
+TDI_STATUS
+InfoTdiQueryGetATInfo(
+ TDIEntityID ID,
+ PIP_INTERFACE Interface,
+ PNDIS_BUFFER Buffer,
+ PUINT BufferSize)
+{
+ ULONG ATInfo[2];
+ TDI_STATUS Status;
+
+ TI_DbgPrint(DEBUG_INFO, ("Called.\n"));
+
+ if (!Interface)
+ return TDI_INVALID_PARAMETER;
+
+ if (*BufferSize < sizeof(ATInfo))
+ return STATUS_BUFFER_TOO_SMALL;
+
+ /* FIXME: I have no idea what the first field should contain... */
+ ATInfo[0] = 0;
+ ATInfo[1] = Interface->Index;
+
+ Status = InfoCopyOut((PCHAR)ATInfo,
+ sizeof(ATInfo),
+ Buffer,
+ BufferSize);
+
+ TI_DbgPrint(DEBUG_INFO, ("Returning %08x\n", Status));
+
+ return Status;
+}
+
TDI_STATUS InfoTdiQueryInformationEx(
PTDI_REQUEST Request,
TDIObjectID *ID,
@@ -256,6 +288,11 @@ TDI_STATUS InfoTdiQueryInformationEx(
return InfoTdiQueryGetIPSnmpInfo(ID->toi_entity,
EntityListContext, Buffer, BufferSize);
else
return TDI_INVALID_PARAMETER;
+ else if (ID->toi_entity.tei_entity == AT_ENTITY)
+ if ((EntityListContext = GetContext(ID->toi_entity)))
+ return InfoTdiQueryGetATInfo(ID->toi_entity,
EntityListContext, Buffer, BufferSize);
+ else
+ return TDI_INVALID_PARAMETER;
else
return TDI_INVALID_PARAMETER;