Skip to content

Commit 95ddb32

Browse files
committed
New Packet.dll function for BIOCGETINFO, PacketGetInfo
1 parent a3079a0 commit 95ddb32

File tree

3 files changed

+48
-0
lines changed

3 files changed

+48
-0
lines changed

Common/Packet32.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,7 @@ extern "C"
424424
_Success_(return) BOOLEAN PacketGetAdapterNames(_Out_writes_opt_(_Old_(*BufferSize)) PCHAR pStr, _Inout_ PULONG BufferSize);
425425
_Success_(return) BOOLEAN PacketGetNetInfoEx(_In_ PCCH AdapterName, _Out_writes_to_(_Old_(*NEntries),*NEntries) npf_if_addr* buffer, _Inout_ PLONG NEntries);
426426
_Success_(return) BOOLEAN PacketRequest(_In_ LPADAPTER AdapterObject, _In_ BOOLEAN Set, _Inout_updates_bytes_(PACKET_OID_DATA_LENGTH(OidData->Length)) PPACKET_OID_DATA OidData);
427+
_Success_(return) BOOLEAN PacketGetInfo(_In_opt_ LPADAPTER AdapterObject, _Inout_updates_bytes_(PACKET_OID_DATA_LENGTH(OidData->Length)) PPACKET_OID_DATA OidData);
427428
HANDLE PacketGetReadEvent(_In_ LPADAPTER AdapterObject);
428429
__declspec(deprecated("Kernel dump mode is not supported")) BOOLEAN PacketSetDumpName(LPADAPTER AdapterObject, void* name, int len);
429430
__declspec(deprecated("Kernel dump mode is not supported")) BOOLEAN PacketSetDumpLimits(LPADAPTER AdapterObject, UINT maxfilesize, UINT maxnpacks);

packetWin7/Dll/Packet.def

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,5 @@ EXPORTS
3939
PacketSetLoopbackBehavior
4040
PacketSetTimestampMode
4141
PacketGetTimestampModes
42+
PacketGetInfo
4243
PacketGetAirPcapHandle

packetWin7/Dll/Packet32.cpp

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3792,4 +3792,50 @@ PAirpcapHandle PacketGetAirPcapHandle(LPADAPTER AdapterObject)
37923792
return handle;
37933793
}
37943794

3795+
_Use_decl_annotations_
3796+
BOOLEAN PacketGetInfo(
3797+
LPADAPTER AdapterObject,
3798+
PPACKET_OID_DATA OidData)
3799+
{
3800+
HANDLE hAdapter = INVALID_HANDLE_VALUE;
3801+
BOOLEAN bCloseAdapter = FALSE;
3802+
DWORD BytesReturned = 0;
3803+
DWORD err = ERROR_SUCCESS;
3804+
TRACE_ENTER();
3805+
3806+
if (AdapterObject == NULL) {
3807+
hAdapter = PacketGetAdapterHandle("", 0);
3808+
bCloseAdapter = TRUE;
3809+
}
3810+
else if(AdapterObject->Flags & INFO_FLAG_MASK_NOT_NPF)
3811+
{
3812+
TRACE_PRINT("PacketRequest not supported on non-NPF adapters.");
3813+
TRACE_EXIT();
3814+
SetLastError(ERROR_NOT_SUPPORTED);
3815+
return FALSE;
3816+
}
3817+
else {
3818+
hAdapter = AdapterObject->hFile;
3819+
}
3820+
3821+
if(!DeviceIoControl(hAdapter, BIOCGETINFO,
3822+
OidData, PACKET_OID_DATA_LENGTH(OidData->Length),
3823+
OidData, PACKET_OID_DATA_LENGTH(OidData->Length),
3824+
&BytesReturned, NULL))
3825+
{
3826+
err = GetLastError();
3827+
}
3828+
TRACE_PRINT3("PacketGetInfo: ID = 0x%.08x, Length = %d, ErrCode = 0x%.08x",
3829+
OidData->Oid,
3830+
OidData->Length,
3831+
err);
3832+
3833+
if (bCloseAdapter) {
3834+
CloseHandle(hAdapter);
3835+
}
3836+
TRACE_EXIT();
3837+
SetLastError(err);
3838+
return (err == ERROR_SUCCESS);
3839+
}
3840+
37953841
/* @} */

0 commit comments

Comments
 (0)