⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smsndis.cod

📁 这是mobile6.0下的DMB驱动
💻 COD
📖 第 1 页 / 共 5 页
字号:
  002dc	e38440bb	 orr         r4, r4, #0xBB

; 481  :             break;

  002e0	eaffffb0	 b           |$L41941|
  002e4		 |$L41822|

; 454  :             break;
; 455  : 		CASE_OID(OID_802_3_MAXIMUM_LIST_SIZE)
; 456  :             tmpULong = MAX_MULTICAST_LIST_SIZE;

  002e4	e3a0300c	 mov         r3, #0xC

; 457  :             pReturnBuff = (PVOID)&tmpULong;
; 458  :             returnBuffLen  = sizeof(tmpULong);
; 459  :             break;

  002e8	eaffff75	 b           |$L42343|
  002ec		 |$L41825|

; 460  : 		CASE_OID(OID_802_3_MULTICAST_LIST)
; 461  : 			pReturnBuff = (PVOID)pSmsNdis->MulticastList;
; 462  :             returnBuffLen  = pSmsNdis->MulticastListCount * ETHERNET_ADDRESS_LEN;			

  002ec	e5903054	 ldr         r3, [r0, #0x54]
  002f0	e280600c	 add         r6, r0, #0xC
  002f4	e0833083	 add         r3, r3, r3, lsl #1
  002f8	e1a05083	 mov         r5, r3, lsl #1

; 463  :             break;

  002fc	ea000001	 b           |$L41741|
  00300		 |$L41819|

; 427  : 		CASE_OID(OID_GEN_XMIT_ERROR)
; 428  : 			tmpULong = 0;
; 429  :             pReturnBuff = (PVOID)&tmpULong;
; 430  :             returnBuffLen  = sizeof(tmpULong);
; 431  :             break;
; 432  : 		CASE_OID(OID_GEN_RCV_ERROR)
; 433  : 			tmpULong = 0;
; 434  :             pReturnBuff = (PVOID)&tmpULong;
; 435  :             returnBuffLen  = sizeof(tmpULong);
; 436  :             break;
; 437  : 		CASE_OID(OID_GEN_RCV_NO_BUFFER)
; 438  : 			tmpULong = 0;
; 439  :             pReturnBuff = (PVOID)&tmpULong;
; 440  :             returnBuffLen  = sizeof(tmpULong);
; 441  :             break;
; 442  : 		CASE_OID(OID_GEN_INIT_TIME_MS)
; 443  : 			tmpULong = 0;
; 444  :             pReturnBuff = (PVOID)&tmpULong;
; 445  :             returnBuffLen  = sizeof(tmpULong);
; 446  :             break;
; 447  : 		CASE_OID(OID_802_3_PERMANENT_ADDRESS)
; 448  :             pReturnBuff = (PVOID)EmuEthernetAddr;
; 449  :             returnBuffLen  = sizeof(EmuEthernetAddr);
; 450  :             break;
; 451  : 		CASE_OID(OID_802_3_CURRENT_ADDRESS)
; 452  :             pReturnBuff = (PVOID)EmuEthernetAddr;
; 453  :             returnBuffLen  = sizeof(EmuEthernetAddr);

  00300	e3a05006	 mov         r5, #6
  00304	e28d6004	 add         r6, sp, #4
  00308		 |$L41741|

; 525  : 	}
; 526  : 
; 527  : #undef CASE_OID
; 528  : #undef CASE_OID_NOT_SUPPORTED
; 529  : 
; 530  : 	if (ndisStatus == NDIS_STATUS_SUCCESS)
; 531  : 	{
; 532  : 		if (returnBuffLen > InfoBufferLen)

  00308	e1550008	 cmp         r5, r8

; 533  : 		{
; 534  : 			*pBytesNeeded = returnBuffLen;

  0030c	85875000	 strhi       r5, [r7]
  00310	8affffa4	 bhi         |$L41941|

; 535  : 			DBGMSG(ZONE_ERROR, (TEXT("SmsNdis: pInfoBuffer len too small. Len %d Need %d\r\n"),InfoBufferLen,returnBuffLen));
; 536  : 		}
; 537  : 		else
; 538  : 		{
; 539  : 			if (pReturnBuff)

  00314	e3560000	 cmp         r6, #0
  00318	0affffa1	 beq         |$L41940|

; 540  : 			{
; 541  : 				NdisMoveMemory(pInfoBuffer, pReturnBuff, returnBuffLen);

  0031c	e1a02005	 mov         r2, r5
  00320	e1a01006	 mov         r1, r6
  00324	e1a0000a	 mov         r0, r10
  00328	eb000000	 bl          memcpy

; 542  : 				*pBytesWritten = returnBuffLen;
; 543  : 				*pBytesNeeded = 0;

  0032c	e3a03000	 mov         r3, #0
  00330	e5895000	 str         r5, [r9]
  00334	e5873000	 str         r3, [r7]

; 544  : 			}
; 545  : 			else

  00338	eaffff9a	 b           |$L41941|
  0033c		 |$L42355|
  0033c	fd010100	 DCD         0xfd010100
  00340	fc010201	 DCD         0xfc010201
  00344	01010104	 DCD         0x1010104
  00348	01010103	 DCD         0x1010103
  0034c	01010102	 DCD         0x1010102
  00350	01010101	 DCD         0x1010101
  00354	0002020a	 DCD         0x2020a
  00358	00020209	 DCD         0x20209
  0035c	00020207	 DCD         0x20207
  00360	00020206	 DCD         0x20206
  00364	00020205	 DCD         0x20205
  00368	00020202	 DCD         0x20202
  0036c	00020201	 DCD         0x20201
  00370	00020105	 DCD         0x20105
  00374	c0010017	 DCD         0xc0010017
  00378	00020103	 DCD         0x20103
  0037c	00020102	 DCD         0x20102
  00380	00020101	 DCD         0x20101
  00384	00010202	 DCD         0x10202
  00388	00020203	 DCD         0x20203
  0038c	0002020b	 DCD         0x2020b
  00390	00000000	 DCD         |??_C@_0BF@HDBOHGE@Siano?5NDIS?5Miniport?$AA?$AA@|
  00394	00010101	 DCD         0x10101
  00398	00010201	 DCD         0x10201
  0039c	00000000	 DCD         |__security_cookie|
  003a0		 |$M42351|

			 ENDP  ; |SmsNdis_QueryInformationHandler|

	EXPORT	|SmsNdis_SetInformationHandler|
	IMPORT	|memset|

  00000			 AREA	 |.text| { |SmsNdis_SetInformationHandler| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$SmsNdis_SetInformationHandler|, PDATA, SELECTION=5, ASSOC=|.text| { |SmsNdis_SetInformationHandler| } ; comdat associative
|$T42375| DCD	|$L42374|
	DCD	0x40005801
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |SmsNdis_SetInformationHandler| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |SmsNdis_SetInformationHandler| PROC

; 576  : {

  00000		 |$L42374|
  00000	e92d47f0	 stmdb       sp!, {r4 - r10, lr}
  00004		 |$M42372|
  00004	e1a05003	 mov         r5, r3
  00008	e1a0a002	 mov         r10, r2
  0000c	e1a07000	 mov         r7, r0

; 577  :     NDIS_STATUS ndisStatus;
; 578  : 	PSMS_SMS_NDIS_ST pSmsNdis;
; 579  : 	UINT32 i;
; 580  : 	ULONG tmpULong;
; 581  : 
; 582  : 	DBGMSG(ZONE_INFO, (TEXT("SmsNdis: +SmsNdis_SetInformationHandler\r\n")));
; 583  : 
; 584  : 	pSmsNdis = (PSMS_SMS_NDIS_ST)MiniportAdapterContext;
; 585  : 	ndisStatus = NDIS_STATUS_SUCCESS;
; 586  : 	*pBytesRead = 0;

  00010	e59d8020	 ldr         r8, [sp, #0x20]

; 587  : 	*pBytesNeeded = 0;

  00014	e59d6024	 ldr         r6, [sp, #0x24]

; 588  : 	
; 589  : #define CASE_OID(Oid) \
; 590  : 	case Oid: \
; 591  : 	DBGMSG(ZONE_INFO, (TEXT("SmsNdis: Set 0x%08X ") TEXT(#Oid) TEXT("\r\n"),Oid));
; 592  : 
; 593  : #define CASE_OID_NOT_SUPPORTED(Oid) \
; 594  : 	case Oid: \
; 595  : 	DBGMSG(ZONE_WARNING, (TEXT("SmsNdis: Set 0x%08X ") TEXT(#Oid) TEXT(" not supported\r\n"),Oid)); \
; 596  : 	ndisStatus = NDIS_STATUS_NOT_SUPPORTED;
; 597  : 
; 598  : 	switch(Oid)

  00018	e59fe13c	 ldr         lr, [pc, #0x13C]
  0001c	e3a00000	 mov         r0, #0
  00020	e5880000	 str         r0, [r8]
  00024	e5860000	 str         r0, [r6]
  00028	e3a04000	 mov         r4, #0
  0002c	e151000e	 cmp         r1, lr
  00030	0a00003a	 beq         |$L41971|
  00034	e59fe11c	 ldr         lr, [pc, #0x11C]
  00038	e151000e	 cmp         r1, lr
  0003c	0a00002e	 beq         |$L41978|
  00040	e59fe10c	 ldr         lr, [pc, #0x10C]
  00044	e151000e	 cmp         r1, lr
  00048	0a00000d	 beq         |$L42004|
  0004c	e3a03801	 mov         r3, #1, 16
  00050	e3833f46	 orr         r3, r3, #0x46, 30
  00054	e1510003	 cmp         r1, r3
  00058	0a000024	 beq         |$L41998|
  0005c	e59f30ec	 ldr         r3, [pc, #0xEC]
  00060	e1510003	 cmp         r1, r3
  00064	0a000021	 beq         |$L41998|
  00068	e59f30dc	 ldr         r3, [pc, #0xDC]
  0006c	e1510003	 cmp         r1, r3
  00070	0a000006	 beq         |$L41985|
  00074	e59f30cc	 ldr         r3, [pc, #0xCC]
  00078	e1510003	 cmp         r1, r3

; 672  : 		default:
; 673  : 			DBGMSG(ZONE_WARNING, (TEXT("SmsNdis: Set Oid 0x%08X invalid or not supported\r\n"),Oid));
; 674  : 			ndisStatus = NDIS_STATUS_INVALID_OID;

  0007c	159f40c0	 ldrne       r4, [pc, #0xC0]
  00080	1a00002a	 bne         |$L41968|
  00084		 |$L42004|

; 667  : 
; 668  : 		CASE_OID_NOT_SUPPORTED(OID_GEN_PROTOCOL_OPTIONS)
; 669  : 			break;
; 670  : 		CASE_OID_NOT_SUPPORTED(OID_PNP_ADD_WAKE_UP_PATTERN)

  00084	e3a04103	 mov         r4, #3, 2
  00088	e38440bb	 orr         r4, r4, #0xBB

; 671  : 			break;

  0008c	ea000027	 b           |$L41968|
  00090		 |$L41985|

; 629  : 			*pBytesNeeded = 0;
; 630  : 			break;
; 631  : 		CASE_OID(OID_802_3_MULTICAST_LIST)
; 632  : 
; 633  :             if (((InfoBufferLen % ETHERNET_ADDRESS_LEN) != 0) ||
; 634  :                  (InfoBufferLen > (ETHERNET_ADDRESS_LEN * MAX_MULTICAST_LIST_SIZE)))

  00090	e59f30a8	 ldr         r3, [pc, #0xA8]
  00094	e0832395	 umull       r2, r3, r5, r3
  00098	e1a09123	 mov         r9, r3, lsr #2
  0009c	e0893089	 add         r3, r9, r9, lsl #1
  000a0	e0553083	 subs        r3, r5, r3, lsl #1
  000a4	1a00000d	 bne         |$L41988|
  000a8	e3550048	 cmp         r5, #0x48
  000ac	8a00000b	 bhi         |$L41988|

; 639  : 			}
; 640  : 
; 641  : 			NdisZeroMemory(pSmsNdis->MulticastList,ETHERNET_ADDRESS_LEN * MAX_MULTICAST_LIST_SIZE);

  000b0	e287000c	 add         r0, r7, #0xC
  000b4	e3a02048	 mov         r2, #0x48
  000b8	e3a01000	 mov         r1, #0
  000bc	eb000000	 bl          memset

; 642  : 			if (InfoBufferLen > 0)

  000c0	e3550000	 cmp         r5, #0

; 643  : 			{
; 644  : 				NdisMoveMemory(pSmsNdis->MulticastList,pInfoBuffer,InfoBufferLen);

  000c4	11a02005	 movne       r2, r5
  000c8	11a0100a	 movne       r1, r10
  000cc	1287000c	 addne       r0, r7, #0xC
  000d0	1b000000	 blne        memcpy

; 645  : 			}
; 646  : 			pSmsNdis->MulticastListCount = InfoBufferLen / ETHERNET_ADDRESS_LEN;

  000d4	e5879054	 str         r9, [r7, #0x54]

; 647  : 			
; 648  : 			*pBytesRead = InfoBufferLen;

  000d8	e5885000	 str         r5, [r8]

; 649  : 
; 650  : 			DBGMSG(ZONE_INFO, (TEXT("SmsNdis: Multicast Address List :\r\n")));
; 651  : 			for (i = 0;i < pSmsNdis->MulticastListCount;i++)
; 652  : 			{
; 653  : 				DBGMSG(ZONE_INFO, (TEXT("SmsNdis: %02x:%02x:%02x:%02x:%02x:%02x\r\n"),
; 654  : 					pSmsNdis->MulticastList[i][0],pSmsNdis->MulticastList[i][1],
; 655  : 					pSmsNdis->MulticastList[i][2],pSmsNdis->MulticastList[i][3],
; 656  : 					pSmsNdis->MulticastList[i][4],pSmsNdis->MulticastList[i][5]));
; 657  : 			}
; 658  : 			break;

  000dc	ea000013	 b           |$L41968|
  000e0		 |$L41988|

; 635  : 			{
; 636  : 				*pBytesNeeded = ETHERNET_ADDRESS_LEN;

  000e0	e3a03006	 mov         r3, #6
  000e4		 |$L42371|

; 637  : 				ndisStatus = NDIS_STATUS_INVALID_LENGTH;

  000e4	e59f4050	 ldr         r4, [pc, #0x50]
  000e8	e5863000	 str         r3, [r6]

; 638  : 				break;

  000ec	ea00000f	 b           |$L41968|
  000f0		 |$L41998|

; 659  : 		CASE_OID(OID_GEN_NETWORK_LAYER_ADDRESSES)
; 660  : 			*pBytesRead = InfoBufferLen;
; 661  : 			*pBytesNeeded = 0;
; 662  : 			break;
; 663  : 		CASE_OID(OID_GEN_TRANSPORT_HEADER_OFFSET)
; 664  : 			*pBytesRead = InfoBufferLen;

  000f0	e5885000	 str         r5, [r8]

; 665  : 			*pBytesNeeded = 0;

  000f4	e5860000	 str         r0, [r6]

; 666  : 			break;

  000f8	ea00000c	 b           |$L41968|
  000fc		 |$L41978|

; 617  : 			}	
; 618  : 			DBGMSG(ZONE_INFO, (TEXT("SmsNdis: Set Current packet filter 0x%X\r\n"),tmpULong));
; 619  : 			break;
; 620  : 		CASE_OID(OID_GEN_CURRENT_LOOKAHEAD)
; 621  :             if (InfoBufferLen != sizeof(ULONG))

  000fc	e3550004	 cmp         r5, #4

; 622  : 			{
; 623  : 				*pBytesNeeded = sizeof(ULONG);

  00100	13a03004	 movne       r3, #4
  00104	1afffff6	 bne         |$L42371|

; 624  : 				ndisStatus = NDIS_STATUS_INVALID_LENGTH;
; 625  : 				break;
; 626  : 			}
; 627  : 			pSmsNdis->CurrentLookahead = *((ULONG*)pInfoBuffer);

  00108	e59a3000	 ldr         r3, [r10]

; 628  : 			*pBytesRead = InfoBufferLen;

  0010c	e3a02004	 mov         r2, #4
  00110	e587305c	 str         r3, [r7, #0x5C]
  00114	e5882000	 str         r2, [r8]

; 665  : 			*pBytesNeeded = 0;

  00118	e5860000	 str         r0, [r6]

; 666  : 			break;

  0011c	ea000003	 b           |$L41968|
  00120		 |$L41971|

; 599  : 	{
; 600  : 		CASE_OID(OID_GEN_CURRENT_PACKET_FILTER)
; 601  :             if (InfoBufferLen != sizeof(ULONG))

  00120	e3550004	 cmp         r5, #4

; 602  : 			{
; 603  : 				*pBytesNeeded = ETHERNET_ADDRESS_LEN;
; 604  : 				ndisStatus = NDIS_STATUS_INVALID_LENGTH;
; 605  : 				break;

  00124	1affffed	 bne         |$L41988|

; 606  : 			}
; 607  : 			tmpULong = *((ULONG*)pInfoBuffer);
; 608  : 			//if (tmpULong & SUPPORTED_PACKET_FILTER)
; 609  : 			//{
; 610  : 			//	*pBytesRead = InfoBufferLen;
; 611  : 			//	*pBytesNeeded = 0;
; 612  : 			//	ndisStatus = NDIS_STATUS_NOT_SUPPORTED;
; 613  : 			//}
; 614  : 			//else
; 615  : 			{
; 616  : 				pSmsNdis->CurrentPacketFilter = tmpULong;

  00128	e59a3000	 ldr         r3, [r10]
  0012c	e5873058	 str         r3, [r7, #0x58]
  00130		 |$L41968|

; 675  : 			break;
; 676  : 	}
; 677  : 
; 678  : #undef CASE_OID
; 679  : #undef CASE_OID_NOT_SUPPORTED
; 680  : 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -