switch (Adapter->Media)
{
case NdisMedium802_3:
- /* Ethernet and IEEE 802.3 frames can be destinguished by
+ /* Ethernet and IEEE 802.3 frames can be distinguished by
looking at the IEEE 802.3 length field. This field is
less than or equal to 1500 for a valid IEEE 802.3 frame
and larger than 1500 is it's a valid EtherType value.
ULONG BytesCopied;
NDIS_STATUS Status;
- HeaderBuffer = ExAllocatePool(NonPagedPool,
- Adapter->HeaderSize);
+ HeaderBuffer = ExAllocatePoolWithTag(NonPagedPool,
+ Adapter->HeaderSize,
+ HEADER_TAG);
if (!HeaderBuffer)
return NDIS_STATUS_RESOURCES;
if (BytesCopied != Adapter->HeaderSize)
{
/* Runt frame */
- ExFreePool(HeaderBuffer);
+ ExFreePoolWithTag(HeaderBuffer, HEADER_TAG);
TI_DbgPrint(DEBUG_DATALINK, ("Runt frame (size %d).\n", BytesCopied));
return NDIS_STATUS_NOT_ACCEPTED;
}
BytesCopied,
PacketType);
- ExFreePool(HeaderBuffer);
+ ExFreePoolWithTag(HeaderBuffer, HEADER_TAG);
return Status;
}
InitializeObjectAttributes(&ObjectAttributes,
&TcpipRegistryPath,
- OBJ_CASE_INSENSITIVE,
+ OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE,
0,
NULL);
}
else
{
- KeyValueInfo = ExAllocatePool(PagedPool, sizeof(KEY_VALUE_PARTIAL_INFORMATION) + 16 * sizeof(WCHAR));
+ KeyValueInfo = ExAllocatePoolWithTag(PagedPool, sizeof(KEY_VALUE_PARTIAL_INFORMATION) + 16 * sizeof(WCHAR), KEY_VALUE_TAG);
if (!KeyValueInfo)
{
ZwClose(ParameterHandle);
if (NT_SUCCESS(Status))
{
RegistryDataU.Length = KeyValueInfo->DataLength;
-
- RtlUnicodeStringToAnsiString(&RegistryDataA,
- &RegistryDataU,
- TRUE);
-
- AddrInitIPv4(&Interface->Unicast, inet_addr(RegistryDataA.Buffer));
-
- RtlFreeAnsiString(&RegistryDataA);
+
+ Status = RtlUnicodeStringToAnsiString(&RegistryDataA,
+ &RegistryDataU,
+ TRUE);
+ if (NT_SUCCESS(Status))
+ {
+ AddrInitIPv4(&Interface->Unicast,
+ inet_addr(RegistryDataA.Buffer));
+ RtlFreeAnsiString(&RegistryDataA);
+ }
}
Status = ZwQueryValueKey(ParameterHandle,
if (NT_SUCCESS(Status))
{
RegistryDataU.Length = KeyValueInfo->DataLength;
-
- RtlUnicodeStringToAnsiString(&RegistryDataA,
- &RegistryDataU,
- TRUE);
-
- AddrInitIPv4(&Interface->Netmask, inet_addr(RegistryDataA.Buffer));
-
- RtlFreeAnsiString(&RegistryDataA);
+
+ Status = RtlUnicodeStringToAnsiString(&RegistryDataA,
+ &RegistryDataU,
+ TRUE);
+ if (NT_SUCCESS(Status))
+ {
+ AddrInitIPv4(&Interface->Netmask,
+ inet_addr(RegistryDataA.Buffer));
+ RtlFreeAnsiString(&RegistryDataA);
+ }
}
-
+
/* We have to wait until both IP address and subnet mask
* are read to add the interface route, but we must do it
* before we add the default gateway */
if (NT_SUCCESS(Status))
{
RegistryDataU.Length = KeyValueInfo->DataLength;
-
- RtlUnicodeStringToAnsiString(&RegistryDataA,
- &RegistryDataU,
- TRUE);
-
- AddrInitIPv4(&Router, inet_addr(RegistryDataA.Buffer));
-
- if (!AddrIsUnspecified(&Router))
- RouterCreateRoute(&DefaultMask, &DefaultMask, &Router, Interface, 1);
-
- RtlFreeAnsiString(&RegistryDataA);
+
+ Status = RtlUnicodeStringToAnsiString(&RegistryDataA,
+ &RegistryDataU,
+ TRUE);
+ if (NT_SUCCESS(Status))
+ {
+ AddrInitIPv4(&Router, inet_addr(RegistryDataA.Buffer));
+
+ if (!AddrIsUnspecified(&Router))
+ RouterCreateRoute(&DefaultMask, &DefaultMask, &Router, Interface, 1);
+
+ RtlFreeAnsiString(&RegistryDataA);
+ }
}
}
-
+
+ ExFreePoolWithTag(KeyValueInfo, KEY_VALUE_TAG);
ZwClose(ParameterHandle);
}
-
+
return TRUE;
}
if (!Adapter->Context)
return;
- Context = ExAllocatePool(NonPagedPool, sizeof(RECONFIGURE_CONTEXT));
+ Context = ExAllocatePoolWithTag(NonPagedPool, sizeof(RECONFIGURE_CONTEXT), CONTEXT_TAG);
if (!Context)
return;
if (Adapter->State == LAN_STATE_STARTED)
{
- ExFreePool(Context);
+ ExFreePoolWithTag(Context, CONTEXT_TAG);
return;
}
if (Adapter->State == LAN_STATE_STOPPED)
{
- ExFreePool(Context);
+ ExFreePoolWithTag(Context, CONTEXT_TAG);
return;
}
Adapter->OldState = Adapter->State;
Adapter->State = LAN_STATE_RESETTING;
/* Nothing else to do here */
- ExFreePool(Context);
+ ExFreePoolWithTag(Context, CONTEXT_TAG);
return;
case NDIS_STATUS_RESET_END:
default:
DbgPrint("Unhandled status: %x", GeneralStatus);
- ExFreePool(Context);
+ ExFreePoolWithTag(Context, CONTEXT_TAG);
return;
}
/* Queue the work item */
if (!ChewCreate(ReconfigureAdapterWorker, Context))
- ExFreePool(Context);
+ ExFreePoolWithTag(Context, CONTEXT_TAG);
}
VOID NTAPI ProtocolStatusComplete(NDIS_HANDLE NdisBindingContext)
IN PVOID SystemSpecific2)
/*
* FUNCTION: Called by NDIS during NdisRegisterProtocol to set up initial
- * bindings, and periodically thereafer as new adapters come online
+ * bindings, and periodically thereafter as new adapters come online
* ARGUMENTS:
* Status: Return value to NDIS
* BindContext: Handle provided by NDIS to track pending binding operations
OBJECT_ATTRIBUTES Attributes;
NTSTATUS Status;
- InitializeObjectAttributes(&Attributes, RegistryPath, OBJ_CASE_INSENSITIVE, 0, 0);
+ InitializeObjectAttributes(&Attributes, RegistryPath, OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, 0, 0);
Status = ZwOpenKey(RegHandle, KEY_ALL_ACCESS, &Attributes);
return Status;
}
UnicodeString.MaximumLength = Information->DataLength;
String->Buffer =
- (PWCHAR)ExAllocatePool( NonPagedPool,
- UnicodeString.MaximumLength + sizeof(WCHAR) );
+ (PWCHAR)ExAllocatePoolWithTag( NonPagedPool,
+ UnicodeString.MaximumLength + sizeof(WCHAR), REG_STR_TAG );
if( !String->Buffer ) return STATUS_NO_MEMORY;
BOOLEAN Deallocate) {
NTSTATUS Status;
UNICODE_STRING Ustr = *ResultFirst;
- PWSTR new_string = ExAllocatePool
+ PWSTR new_string = ExAllocatePoolWithTag
(PagedPool,
- (ResultFirst->Length + Second->Length + sizeof(WCHAR)));
+ (ResultFirst->Length + Second->Length + sizeof(WCHAR)), TEMP_STRING_TAG);
if( !new_string ) {
return STATUS_NO_MEMORY;
}
new_string[ResultFirst->Length / sizeof(WCHAR)] = 0;
Status = RtlCreateUnicodeString(ResultFirst,new_string) ?
STATUS_SUCCESS : STATUS_NO_MEMORY;
- ExFreePool(new_string);
+ ExFreePoolWithTag(new_string, TEMP_STRING_TAG);
return Status;
}
RtlFreeUnicodeString( &RootDevice );
RtlFreeUnicodeString( &LinkageKeyName );
RtlFreeUnicodeString( &DescKeyName );
- if( LinkageKey ) NtClose( LinkageKey );
- if( DescKey ) NtClose( DescKey );
+ if( LinkageKey ) ZwClose( LinkageKey );
+ if( DescKey ) ZwClose( DescKey );
TI_DbgPrint(DEBUG_DATALINK,("Returning %x\n", Status));
NTSTATUS Status;
ULONG i;
KEY_BASIC_INFORMATION *Kbio =
- ExAllocatePool(NonPagedPool, sizeof(KEY_BASIC_INFORMATION));
+ ExAllocatePoolWithTag(NonPagedPool, sizeof(KEY_BASIC_INFORMATION), KBIO_TAG);
ULONG KbioLength = sizeof(KEY_BASIC_INFORMATION), ResultLength;
RtlInitUnicodeString( DeviceDesc, NULL );
if( !NT_SUCCESS(Status) ) {
TI_DbgPrint(DEBUG_DATALINK,("Couldn't open Enum key %wZ: %x\n",
&EnumKeyName, Status));
- ExFreePool( Kbio );
+ ExFreePoolWithTag( Kbio, KBIO_TAG );
return Status;
}
Kbio, KbioLength, &ResultLength );
if( Status == STATUS_BUFFER_TOO_SMALL || Status == STATUS_BUFFER_OVERFLOW ) {
- ExFreePool( Kbio );
+ ExFreePoolWithTag( Kbio, KBIO_TAG );
KbioLength = ResultLength;
- Kbio = ExAllocatePool( NonPagedPool, KbioLength );
+ Kbio = ExAllocatePoolWithTag( NonPagedPool, KbioLength, KBIO_TAG );
if( !Kbio ) {
TI_DbgPrint(DEBUG_DATALINK,("Failed to allocate memory\n"));
- NtClose( EnumKey );
+ ZwClose( EnumKey );
return STATUS_NO_MEMORY;
}
if( !NT_SUCCESS(Status) ) {
TI_DbgPrint(DEBUG_DATALINK,("Couldn't enum key child %d\n", i));
- NtClose( EnumKey );
- ExFreePool( Kbio );
+ ZwClose( EnumKey );
+ ExFreePoolWithTag( Kbio, KBIO_TAG );
return Status;
}
}
Status = CheckForDeviceDesc
( &EnumKeyName, &TargetKeyName, Name, DeviceDesc );
if( NT_SUCCESS(Status) ) {
- NtClose( EnumKey );
- ExFreePool( Kbio );
+ ZwClose( EnumKey );
+ ExFreePoolWithTag( Kbio, KBIO_TAG );
return Status;
} else Status = STATUS_SUCCESS;
}
}
- NtClose( EnumKey );
- ExFreePool( Kbio );
+ ZwClose( EnumKey );
+ ExFreePoolWithTag( Kbio, KBIO_TAG );
return STATUS_UNSUCCESSFUL;
}