11#define WIN32_NO_STATUS
29 ULONG outBufLen, outBufLenNeeded;
42 DPRINT(
"inBufLen %ux\n",
sizeof(inTcpReq));
50 for (callsLeft = 4; callsLeft > 0; callsLeft++)
59 outBufLen = outBufLenNeeded;
60 DPRINT(
"outBufLen %lx\n", outBufLen);
85 if (outBufLenNeeded <= outBufLen)
98 DPRINT(
"TcpFile %p\n", TcpFile);
100 DPRINT(
"idCount %lx\n", *idCount);
102 pEntities = *ppEntities;
103 for (i1 = 0; i1 < *idCount; i1++)
133 sizeof(*outIPSNMPInfo),
230 DWORD outIDCount, i1, iAddr;
231 DWORD bCastAddr, outNumberOfBytes;
239 IntfIDList =
HeapAlloc(hHeap, 0,
sizeof(*IntfIDList));
250 DPRINT(
"TcpFile %p\n", TcpFile);
254 DPRINT(
"ERROR in AllocAndGetEntityArray: out of memory!\n");
260 pIFEntry =
HeapAlloc(hHeap, 0, IFEntryLen);
269 pEntityID = outEntityID;
270 for (i1 = 0; i1 < outIDCount; i1++)
287 pIntfIDItem->
id = *pEntityID;
296 outNumberOfBytes = 0;
301 DPRINT(
"Buffer size needed: %lu\n", outNumberOfBytes);
305 if (NumberOfBytesReturned)
306 *NumberOfBytesReturned = 0;
334 DPRINT(
"DeviceIoControl failed, Status %li!\n", LastErr);
347 for (iAddr = 0; iAddr < pIntfIDItem->
numaddr; iAddr++)
349 DPRINT(
"BufLen %lu\n",BufLenNeeded);
361 bCastAddr = (pIPAddrEntry->
iae_bcastaddr == 0) ? 0 : 0xffffffff;
379 pEntityID = outEntityID;
380 for (i1 = 0; i1 < outIDCount; i1++)
408 for (iAddr = 0; iAddr < pIntfIDItem->
numaddr; iAddr++)
421 if (NumberOfBytesReturned)
422 *NumberOfBytesReturned = outNumberOfBytes;
423 if (NeedsCompletion !=
NULL)
424 *NeedsCompletion =
FALSE;
428 DPRINT(
"WSHIoctl_GetInterfaceList - CLEANUP\n");
431 if (pIFEntry !=
NULL)
#define IP_MIB_ADDRTABLE_ENTRY_ID
static void list_remove(struct list_entry *entry)
static void list_add_head(struct list_entry *head, struct list_entry *entry)
static void list_init(struct list_entry *head)
BOOL WINAPI DeviceIoControl(IN HANDLE hDevice, IN DWORD dwIoControlCode, IN LPVOID lpInBuffer OPTIONAL, IN DWORD nInBufferSize OPTIONAL, OUT LPVOID lpOutBuffer OPTIONAL, IN DWORD nOutBufferSize OPTIONAL, OUT LPDWORD lpBytesReturned OPTIONAL, IN LPOVERLAPPED lpOverlapped OPTIONAL)
#define NT_SUCCESS(StatCode)
#define HeapFree(x, y, z)
static void cleanup(void)
INT WSHIoctl_GetInterfaceList(IN LPVOID OutputBuffer, IN DWORD OutputBufferLength, OUT LPDWORD NumberOfBytesReturned, OUT LPBOOL NeedsCompletion)
INT GetIPSNMPInfo(IN HANDLE TcpFile, IN TDIEntityID *pEntityID, OUT IPSNMPInfo *outIPSNMPInfo)
INT GetIFEntry(IN HANDLE TcpFile, IN TDIEntityID *pEntityID, OUT IFEntry *pIFEntry, IN ULONG IFEntryLen)
struct _IntfIDItem IntfIDItem
BOOL AllocAndGetEntityArray(IN HANDLE TcpFile, IN HANDLE hHeap, OUT TDIEntityID **ppEntities, OUT PDWORD idCount)
INT GetTdiEntityType(IN HANDLE TcpFile, IN TDIEntityID *pEntityID, OUT PULONG pType)
#define MAX_ADAPTER_DESCRIPTION_LENGTH
@ IF_OPER_STATUS_CONNECTING
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
#define LIST_FOR_EACH_ENTRY_SAFE_REV(cursor, cursor2, list, type, field)
NTSTATUS openTcpFile(PHANDLE tcpFile, ACCESS_MASK DesiredAccess)
sockaddr_gen iiBroadcastAddress
IPAddrEntry * pIPAddrEntry0
struct _TDIEntityID TDIEntityID
#define INFO_CLASS_PROTOCOL
#define INFO_CLASS_GENERIC
#define INFO_TYPE_PROVIDER
#define IOCTL_TCP_QUERY_INFORMATION_EX
#define RtlZeroMemory(Destination, Length)
struct sockaddr_in AddressIn
_In_ WDFREQUEST _In_ size_t OutputBufferLength
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR OutputBuffer
DWORD WINAPI GetLastError(void)
struct _INTERFACE_INFO INTERFACE_INFO
struct _INTERFACE_INFO * LPINTERFACE_INFO