https://git.reactos.org/?p=reactos.git;a=commitdiff;h=1e28d4d92bfa1e69b4db6eefae9e8cbff498c846

commit 1e28d4d92bfa1e69b4db6eefae9e8cbff498c846
Author:     Timo Kreuzer <[email protected]>
AuthorDate: Sun Dec 9 20:52:54 2018 +0100
Commit:     Pierre Schweitzer <[email protected]>
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;
 

Reply via email to