185 for (
i = 0;
i < AssignedResources->Count;
i++)
187 Descriptor = AssignedResources->PartialDescriptors +
i;
191 Adapter->InterruptLevel =
Descriptor->u.Interrupt.Level;
192 Adapter->InterruptVector =
Descriptor->u.Interrupt.Vector;
198 Adapter->IoBaseAddress =
Descriptor->u.Port.Start.LowPart;
237 UINT *RegNetworkAddress = 0;
238 UINT RegNetworkAddressLength = 0;
296 Adapter->InterruptLevel =
332 (
PVOID*)&Adapter->IOBase,
334 Adapter->IoBaseAddress,
343 Adapter->IOPortRangeRegistered =
TRUE;
365 RegNetworkAddress[0], RegNetworkAddress[1], RegNetworkAddress[2], RegNetworkAddress[3],
366 RegNetworkAddress[4], RegNetworkAddress[5]));
368 Adapter->StationAddress[
i] = RegNetworkAddress[
i];
378 Adapter->StationAddress[
i] = Adapter->PermanentAddress[
i];
382 for (
i = 0;
i < 4;
i++) {
384 Adapter->SAPROM[
i*4+0],
385 Adapter->SAPROM[
i*4+1],
386 Adapter->SAPROM[
i*4+2],
387 Adapter->SAPROM[
i*4+3]));
391 Adapter->TXStart = ((
ULONG_PTR)Adapter->RamBase >> 8);
394 Adapter->TXCurrent = -1;
395 Adapter->PageStart = Adapter->TXStart + Adapter->TXCount;
396 Adapter->PageStop = Adapter->TXStart + (Adapter->RamSize >> 8);
399 for (
i = 0;
i < 8;
i++)
400 Adapter->MulticastAddressMask[
i] = 0xFF;
408 Adapter->PageStart));
412 Adapter->CurrentPage,
413 Adapter->NextPacket));
419 Adapter->InterruptVector,
420 Adapter->InterruptLevel,
422 Adapter->InterruptShared,
423 Adapter->InterruptMode);
430 Adapter->InterruptRegistered =
TRUE;
439 Adapter->ShutdownHandlerRegistered =
TRUE;
470 *InterruptRecognized =
TRUE;
471 *QueueMiniportHandleInterrupt =
TRUE;
479 IN ULONG InformationBufferLength,
507 CopyFrom = (
PVOID)&GenericULONG;
508 CopySize =
sizeof(
ULONG);
520 CopyFrom = (
PVOID)&Medium;
530 GenericULONG = 100000;
536 GenericULONG = Adapter->
RamSize -
548 GenericULONG &= 0xFFFFFF00;
549 GenericULONG |= 0x01;
557 CopyFrom = (
PVOID)&GenericUSHORT;
558 CopySize =
sizeof(
USHORT);
568 CopyFrom = (
PVOID)&GenericUSHORT;
569 CopySize =
sizeof(
USHORT);
616 if (CopySize > InformationBufferLength) {
617 *BytesNeeded = (CopySize - InformationBufferLength);
678 *AddressingReset =
TRUE;
730 IN ULONG InformationBufferLength,
756 if (InformationBufferLength <
sizeof(
ULONG)) {
758 *BytesNeeded =
sizeof(
ULONG) - InformationBufferLength;
785 if (InformationBufferLength <
sizeof(
ULONG)) {
787 *BytesNeeded =
sizeof(
ULONG) - InformationBufferLength;
863 if (BytesToTransfer == 0) {
883 BytesToCopy = (DstSize < BytesToTransfer) ? DstSize : BytesToTransfer;
893 if (BytesToTransfer == 0)
907 if (SrcData == RecvStop)
961 if (!NdisWrapperHandle) {
995 DbgPrint(
"ne2000!MiniportInitialize: failed to set DwordTest: 0x%x\n",
Status);
999 DbgPrint(
"ne2000!MiniportInitialize: DwordTest successfully set\n");
1009 DbgPrint(
"ne2000!MiniportInitialize: failed to set StringTest: 0x%x\n",
Status);
1013 DbgPrint(
"ne2000!MiniportInitialize: StringTest successfully set\n");
1025 DbgPrint(
"ne2000!MiniportInitialize: failed to read DwordTest: 0x%x\n",
Status);
1031 DbgPrint(
"ne2000!MiniportInitialize: DwordTest value is wrong: 0x%x\n",
1036 DbgPrint(
"ne2000!MiniportInitialize: DwordTest value was correctly read\n");
1043 DbgPrint(
"ne2000!MiniportInitialize: failed to read StringTest: 0x%x\n",
Status);
1050 DbgPrint(
"ne2000!MiniportInitialize: StringTest value is wrong: %wZ\n",
1055 DbgPrint(
"ne2000!MiniportInitialize: StringTest value was correctly read\n");
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesWritten
static VOID NTAPI MiniportHalt(IN NDIS_HANDLE MiniportAdapterContext)
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_opt_ WDFREQUEST _In_opt_ PWDF_REQUEST_SEND_OPTIONS _In_ PWDF_USB_CONTROL_SETUP_PACKET _In_opt_ PWDF_MEMORY_DESCRIPTOR _Out_opt_ PULONG BytesTransferred
#define NDIS_STATUS_INVALID_OID
union _NDIS_CONFIGURATION_PARAMETER::@2071 ParameterData
static VOID NTAPI MiniportDisableInterrupt(IN NDIS_HANDLE MiniportAdapterContext)
#define NdisInterruptLevelSensitive
NDIS_STATUS NICSetup(PNIC_ADAPTER Adapter)
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
_Must_inspect_result_ _Out_ PNDIS_STATUS _Out_ PNDIS_STATUS OpenErrorStatus
VOID EXPORT NdisMQueryAdapterResources(OUT PNDIS_STATUS Status, IN NDIS_HANDLE WrapperConfigurationContext, OUT PNDIS_RESOURCE_LIST ResourceList, IN OUT PUINT BufferSize)
_In_ NDIS_HANDLE _In_ PNDIS_PACKET Packet
#define OID_GEN_VENDOR_DRIVER_VERSION
enum _NDIS_MEDIUM NDIS_MEDIUM
NDIS_MINIPORT_INTERRUPT Interrupt
#define NDIS_STATUS_PENDING
VOID EXPORT NdisMDeregisterAdapterShutdownHandler(IN NDIS_HANDLE MiniportHandle)
static NDIS_STATUS NTAPI MiniportTransferData(OUT PNDIS_PACKET Packet, OUT PUINT BytesTransferred, IN NDIS_HANDLE MiniportAdapterContext, IN NDIS_HANDLE MiniportReceiveContext, IN UINT ByteOffset, IN UINT BytesToTransfer)
struct _DISCARD_HEADER DISCARD_HEADER
static NDIS_STATUS NTAPI MiniportReconfigure(OUT PNDIS_STATUS OpenErrorStatus, IN NDIS_HANDLE MiniportAdapterContext, IN NDIS_HANDLE WrapperConfigurationContext)
#define OID_GEN_RECEIVE_BUFFER_SPACE
VOID EXPORT NdisOpenConfiguration(OUT PNDIS_STATUS Status, OUT PNDIS_HANDLE ConfigurationHandle, IN NDIS_HANDLE WrapperConfigurationContext)
#define ASSERT_IRQL_EQUAL(x)
NDIS_STATUS EXPORT NdisMRegisterIoPortRange(OUT PVOID *PortOffset, IN NDIS_HANDLE MiniportAdapterHandle, IN UINT InitialPort, IN UINT NumberOfPorts)
#define NICDisableInterrupts(Adapter)
static NDIS_STATUS NTAPI MiniportInitialize(OUT PNDIS_STATUS OpenErrorStatus, OUT PUINT SelectedMediumIndex, IN PNDIS_MEDIUM MediumArray, IN UINT MediumArraySize, IN NDIS_HANDLE MiniportAdapterHandle, IN NDIS_HANDLE WrapperConfigurationContext)
DRIVER_HARDWARE_ADDRESS PermanentAddress
NDIS_STATUS NICInitialize(PNIC_ADAPTER Adapter)
#define DRIVER_LENGTH_OF_ADDRESS
#define OID_GEN_MAC_OPTIONS
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
_In_ NDIS_HANDLE MiniportAdapterHandle
#define OID_GEN_CURRENT_PACKET_FILTER
#define OID_GEN_HARDWARE_STATUS
#define OID_GEN_MEDIA_IN_USE
_Must_inspect_result_ _Out_ PNDIS_STATUS _Out_ PNDIS_STATUS _Out_ PNDIS_HANDLE _Out_ PUINT SelectedMediumIndex
_Must_inspect_result_ _Out_ PNDIS_STATUS _Out_ PNDIS_STATUS _Out_ PNDIS_HANDLE _Out_ PUINT _In_ UINT MediumArraySize
#define NDIS_MAC_OPTION_NO_LOOPBACK
#define InsertTailList(ListHead, Entry)
#define NDIS_STATUS_UNSUPPORTED_MEDIA
static VOID NTAPI MiniportEnableInterrupt(IN NDIS_HANDLE MiniportAdapterContext)
#define DRIVER_FRAME_SIZE
_Must_inspect_result_ _Out_ PNDIS_STATUS _Out_ PNDIS_HANDLE _In_ NDIS_HANDLE WrapperConfigurationContext
#define CmResourceTypePort
_In_ UINT _In_ UINT BytesToCopy
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesRead
#define NdisGetNextBuffer(CurrentBuffer, NextBuffer)
#define NDIS_STATUS_NOT_SUPPORTED
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
#define OID_GEN_PROTOCOL_OPTIONS
#define OID_802_3_MAXIMUM_LIST_SIZE
VOID EXPORT NdisReadConfiguration(OUT PNDIS_STATUS Status, OUT PNDIS_CONFIGURATION_PARAMETER *ParameterValue, IN NDIS_HANDLE ConfigurationHandle, IN PNDIS_STRING Keyword, IN NDIS_PARAMETER_TYPE ParameterType)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
#define NDIS_MAC_OPTION_TRANSFERS_NOT_PEND
#define OID_GEN_MEDIA_CONNECT_STATUS
#define NDIS_PACKET_TYPE_SOURCE_ROUTING
#define OID_GEN_TRANSMIT_BUFFER_SPACE
#define OID_GEN_MAXIMUM_LOOKAHEAD
#define DRIVER_NDIS_MINOR_VERSION
#define NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA
#define DRIVER_INTERRUPT_MASK
_In_ UINT _In_ UINT _In_ PNDIS_PACKET _In_ UINT _Out_ PUINT BytesCopied
#define NDIS_STATUS_INVALID_LENGTH
BOOLEAN NICCheck(PNIC_ADAPTER Adapter)
#define NDIS_PACKET_TYPE_GROUP
static NDIS_STATUS NTAPI MiniportSend(IN NDIS_HANDLE MiniportAdapterContext, IN PNDIS_PACKET Packet, IN UINT Flags)
VOID NICTransmit(PNIC_ADAPTER Adapter)
#define DRIVER_DEFAULT_TX_BUFFER_COUNT
static BOOLEAN NTAPI MiniportCheckForHang(IN NDIS_HANDLE MiniportAdapterContext)
NDIS_STATUS NICReset(PNIC_ADAPTER Adapter)
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
#define OID_GEN_SUPPORTED_LIST
#define DRIVER_DEFAULT_INTERRUPT_SHARED
VOID NTAPI MiniportShutdown(PVOID Context)
VOID EXPORT NdisCloseConfiguration(IN NDIS_HANDLE ConfigurationHandle)
VOID EXPORT NdisMSetAttributes(IN NDIS_HANDLE MiniportAdapterHandle, IN NDIS_HANDLE MiniportAdapterContext, IN BOOLEAN BusMaster, IN NDIS_INTERFACE_TYPE AdapterType)
NDIS_STATUS EXPORT NdisMRegisterInterrupt(OUT PNDIS_MINIPORT_INTERRUPT Interrupt, IN NDIS_HANDLE MiniportAdapterHandle, IN UINT InterruptVector, IN UINT InterruptLevel, IN BOOLEAN RequestIsr, IN BOOLEAN SharedInterrupt, IN NDIS_INTERRUPT_MODE InterruptMode)
#define OID_GEN_VENDOR_ID
#define NDIS_MAC_OPTION_RECEIVE_SERIALIZED
#define OID_GEN_VENDOR_DESCRIPTION
DRIVER_HARDWARE_ADDRESS Addresses[DRIVER_MAX_MULTICAST_LIST_SIZE]
VOID EXPORT NdisTerminateWrapper(IN NDIS_HANDLE NdisWrapperHandle, IN PVOID SystemSpecific)
_Must_inspect_result_ _In_ ULONG Flags
#define OID_GEN_MAXIMUM_FRAME_SIZE
#define NdisInterruptLatched
#define OID_GEN_MAXIMUM_TOTAL_SIZE
static PSecPkgInfoA *static SEC_CHAR ULONG
DRIVER_INFORMATION DriverInfo
VOID NTAPI MiniportHandleInterrupt(IN NDIS_HANDLE MiniportAdapterContext)
#define DRIVER_BLOCK_SIZE
#define NDIS_PACKET_TYPE_FUNCTIONAL
NDIS_STATUS EXPORT NdisAllocateMemory(OUT PVOID *VirtualAddress, IN UINT Length, IN UINT MemoryFlags, IN NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress)
NDIS_STATUS NICStop(PNIC_ADAPTER Adapter)
_Check_return_ _CRTIMP int __cdecl wcsncmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
#define NDIS_STATUS_ADAPTER_NOT_FOUND
static NDIS_STATUS NTAPI MiniportQueryInformation(IN NDIS_HANDLE MiniportAdapterContext, IN NDIS_OID Oid, IN PVOID InformationBuffer, IN ULONG InformationBufferLength, OUT PULONG BytesWritten, OUT PULONG BytesNeeded)
#define STATUS_UNSUCCESSFUL
#define NDIS_STATUS_SUCCESS
static VOID NTAPI MiniportISR(OUT PBOOLEAN InterruptRecognized, OUT PBOOLEAN QueueMiniportHandleInterrupt, IN NDIS_HANDLE MiniportAdapterContext)
_Must_inspect_result_ _Out_ PNDIS_STATUS _Out_ PNDIS_HANDLE ConfigurationHandle
VOID EXPORT NdisReadNetworkAddress(OUT PNDIS_STATUS Status, OUT PVOID *NetworkAddress, OUT PUINT NetworkAddressLength, IN NDIS_HANDLE ConfigurationHandle)
VOID EXPORT NdisInitUnicodeString(IN OUT PNDIS_STRING DestinationString, IN PCWSTR SourceString)
#define DRIVER_MAX_MULTICAST_LIST_SIZE
enum _NDIS_MEDIUM * PNDIS_MEDIUM
PACKET_HEADER PacketHeader
#define DRIVER_VENDOR_DESCRIPTION
NDIS_HANDLE MiniportAdapterHandle
ULONG MaxMulticastListSize
#define DRIVER_MAXIMUM_LOOKAHEAD
#define NDIS_PACKET_TYPE_SMT
#define OID_GEN_LINK_SPEED
#define OID_802_3_MULTICAST_LIST
#define OID_GEN_MAXIMUM_SEND_PACKETS
VOID NICReadData(PNIC_ADAPTER Adapter, PUCHAR Target, ULONG_PTR Source, USHORT Length)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define OID_GEN_MEDIA_SUPPORTED
NTSTATUS NTAPI DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
BOOLEAN IOPortRangeRegistered
#define DRIVER_VENDOR_DRIVER_VERSION
#define InitializeListHead(ListHead)
#define OID_802_3_MAC_OPTIONS
#define OID_GEN_TRANSMIT_BLOCK_SIZE
#define NDIS_PACKET_TYPE_ALL_FUNCTIONAL
_In_opt_ PWSTR _In_ PWSTR _Inout_ PULONG ParameterValue
DRIVER_HARDWARE_ADDRESS StationAddress
#define NICEnableInterrupts(Adapter)
VOID EXPORT NdisMDeregisterIoPortRange(IN NDIS_HANDLE MiniportAdapterHandle, IN UINT InitialPort, IN UINT NumberOfPorts, IN PVOID PortOffset)
#define DRIVER_DEFAULT_IO_BASE_ADDRESS
static VOID NTAPI MiQueryResources(OUT PNDIS_STATUS Status, IN PNIC_ADAPTER Adapter, IN NDIS_HANDLE WrapperConfigurationContext)
#define CmResourceTypeInterrupt
#define DRIVER_DEFAULT_INTERRUPT_NUMBER
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define NDIS_DbgPrint(_t_, _x_)
NDIS_PHYSICAL_ADDRESS HighestAcceptableMax
#define DRIVER_HEADER_SIZE
static __inline VOID NdisQueryPacket(IN PNDIS_PACKET Packet, OUT PUINT PhysicalBufferCount OPTIONAL, OUT PUINT BufferCount OPTIONAL, OUT PNDIS_BUFFER *FirstBuffer OPTIONAL, OUT PUINT TotalPacketLength OPTIONAL)
#define OID_GEN_RECEIVE_BLOCK_SIZE
#define NdisZeroMemory(Destination, Length)
VOID EXPORT NdisQueryBuffer(IN PNDIS_BUFFER Buffer, OUT PVOID *VirtualAddress OPTIONAL, OUT PUINT Length)
#define DRIVER_DEFAULT_INTERRUPT_MODE
#define DRIVER_NDIS_MAJOR_VERSION
#define CM_RESOURCE_INTERRUPT_LATCHED
struct _NIC_ADAPTER * PNIC_ADAPTER
VOID EXPORT NdisMRegisterAdapterShutdownHandler(IN NDIS_HANDLE MiniportHandle, IN PVOID ShutdownContext, IN ADAPTER_SHUTDOWN_HANDLER ShutdownHandler)
#define NdisMInitializeWrapper(NdisWrapperHandle, SystemSpecific1, SystemSpecific2, SystemSpecific3)
BOOLEAN InterruptRegistered
#define OID_802_3_PERMANENT_ADDRESS
#define OID_802_3_CURRENT_ADDRESS
#define NdisStallExecution
#define NDIS_PACKET_TYPE_MAC_FRAME
NDIS_STATUS EXPORT NdisMRegisterMiniport(IN NDIS_HANDLE NdisWrapperHandle, IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics, IN UINT CharacteristicsLength)
NDIS_STATUS NICStart(PNIC_ADAPTER Adapter)
BOOLEAN ShutdownHandlerRegistered
#define NdisMoveMemory(Destination, Source, Length)
#define NDIS_PHYSICAL_ADDRESS_CONST(Low, High)
static PSecPkgInfoA *static SEC_CHAR PVOID
VOID EXPORT NdisMDeregisterInterrupt(IN PNDIS_MINIPORT_INTERRUPT Interrupt)
#define NDIS_STATUS_FAILURE
VOID EXPORT NdisFreeMemory(IN PVOID VirtualAddress, IN UINT Length, IN UINT MemoryFlags)
#define OID_GEN_CURRENT_LOOKAHEAD
#define OID_GEN_DRIVER_VERSION
static ULONG MiniportOIDList[]
static NDIS_STATUS NTAPI MiniportSetInformation(IN NDIS_HANDLE MiniportAdapterContext, IN NDIS_OID Oid, IN PVOID InformationBuffer, IN ULONG InformationBufferLength, OUT PULONG BytesRead, OUT PULONG BytesNeeded)
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
IN PDCB IN PCCB IN VBO IN OUT PULONG OUT PDIRENT OUT PBCB OUT PVBO ByteOffset
VOID EXPORT NdisWriteConfiguration(OUT PNDIS_STATUS Status, IN NDIS_HANDLE ConfigurationHandle, IN PNDIS_STRING Keyword, IN PNDIS_CONFIGURATION_PARAMETER ParameterValue)
static NDIS_STATUS NTAPI MiniportReset(OUT PBOOLEAN AddressingReset, IN NDIS_HANDLE MiniportAdapterContext)