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

📄 system.cod

📁 ARM对MMC卡的编程文档
💻 COD
📖 第 1 页 / 共 3 页
字号:
; 418  :     return TRUE;

  0012c	eaffffd9	 b         |$L37026|
  00130		 |$L37037|

; 411  : 
; 412  :     case DISK_IOCTL_SETINFO:
; 413  :     SetLastError(SetDiskInfo(pDisk, (PDISK_INFO)pInBuf));

  00130	e1a01007	 mov       r1, r7
  00134	e1a00005	 mov       r0, r5
  00138	eb000000	 bl        SetDiskInfo

; 414  :     return TRUE;

  0013c	eaffffd6	 b         |$L37255|
  00140		 |$L37035|

; 405  :     }
; 406  :     return TRUE;
; 407  : 
; 408  :     case DISK_IOCTL_GETINFO:
; 409  :     SetLastError(GetDiskInfo(pDisk, (PDISK_INFO)pInBuf));

  00140	e1a01007	 mov       r1, r7
  00144	e1a00005	 mov       r0, r5
  00148	eb000000	 bl        GetDiskInfo

; 410  :     return TRUE;

  0014c	eaffffd2	 b         |$L37255|
  00150		 |$L37040|

; 419  :   
; 420  :     case DISK_IOCTL_GETNAME:
; 421  :     return GetFolderName(pDisk, (LPWSTR)pOutBuf, nOutBufSize, pBytesReturned);

  00150	e59d3024	 ldr       r3, [sp, #0x24]
  00154	e1a00005	 mov       r0, r5
  00158	e59d2020	 ldr       r2, [sp, #0x20]
  0015c	eb000000	 bl        GetFolderName
  00160		 |$L37256|
  00160	e1a04000	 mov       r4, r0

; 452  :     }
; 453  : }   


  00164	e8bd83f0	 ldmia     sp!, {r4 - r9, pc}
  00168		 |$L37244|

; 388  :     
; 389  :     default:
; 390  :     SetLastError(ERROR_INVALID_PARAMETER);
; 391  :     return FALSE;
; 392  :     }
; 393  : 
; 394  :     switch (dwIoControlCode) {

  00168	e1540002	 cmp       r4, r2
  0016c	0a000013	 beq       |$L37042|
  00170	e1540003	 cmp       r4, r3
  00174	0a00000c	 beq       |$L37050|
  00178	e1540008	 cmp       r4, r8
  0017c	0a000001	 beq       |$L37032|
  00180	e1540009	 cmp       r4, r9

; 447  : 
; 448  : 
; 449  :     default:
; 450  :     SetLastError(ERROR_INVALID_PARAMETER);
; 451  :     return FALSE;

  00184	1affffd2	 bne       |$L37046|
  00188		 |$L37032|

; 395  :     case DISK_IOCTL_READ:
; 396  :     case DISK_IOCTL_WRITE:
; 397  :     case IOCTL_DISK_READ:
; 398  :     case IOCTL_DISK_WRITE:
; 399  : 		pSG = (PSG_REQ)pInBuf;
; 400  :     
; 401  :     DoDiskIO(pDisk, dwIoControlCode, pSG);

  00188	e1a02007	 mov       r2, r7
  0018c	e1a01004	 mov       r1, r4
  00190	e1a00005	 mov       r0, r5
  00194	eb000000	 bl        DoDiskIO

; 402  :     if (pSG->sr_status) {

  00198	e597300c	 ldr       r3, [r7, #0xC]
  0019c	e3530000	 cmp       r3, #0
  001a0	0affffbe	 beq       |$L37034|

; 403  :         SetLastError(pSG->sr_status);

  001a4	e1a00003	 mov       r0, r3

; 404  :         return FALSE;

  001a8	eaffffca	 b         |$L37253|
  001ac		 |$L37050|

; 438  :         }
; 439  :     }    
; 440  :     
; 441  : 
; 442  :     case IOCTL_DISK_GET_STORAGEID:
; 443  :     return GetStorageID(pDisk,
; 444  :                 (PSTORAGE_IDENTIFICATION)pOutBuf,
; 445  :                 nOutBufSize,
; 446  :                 pBytesReturned);

  001ac	e59d3024	 ldr       r3, [sp, #0x24]
  001b0	e1a00005	 mov       r0, r5
  001b4	e59d2020	 ldr       r2, [sp, #0x20]
  001b8	eb000000	 bl        GetStorageID
  001bc	eaffffe7	 b         |$L37256|
  001c0		 |$L37042|

; 422  : 
; 423  :     case IOCTL_DISK_DEVICE_INFO:
; 424  :     {
; 425  :         PSTORAGEDEVICEINFO psdi = (PSTORAGEDEVICEINFO)pInBuf;
; 426  :         if (nInBufSize == sizeof(STORAGEDEVICEINFO)) {

  001c0	e3560050	 cmp       r6, #0x50
  001c4	1affffc2	 bne       |$L37046|

; 427  :             wcscpy( psdi->szProfile, L"SDMMC");

  001c8	e59f1040	 ldr       r1, [pc, #0x40]
  001cc	e2870004	 add       r0, r7, #4
  001d0	eb000000	 bl        wcscpy

; 428  :             psdi->dwDeviceClass = STORAGE_DEVICE_CLASS_BLOCK;
; 429  :             psdi->dwDeviceType |= STORAGE_DEVICE_TYPE_REMOVABLE_MEDIA;
; 430  :             psdi->dwDeviceType |= STORAGE_DEVICE_TYPE_UNKNOWN;

  001d4	e5970048	 ldr       r0, [r7, #0x48]

; 431  :             psdi->dwDeviceFlags |= STORAGE_DEVICE_FLAG_READWRITE;

  001d8	e597104c	 ldr       r1, [r7, #0x4C]
  001dc	e3a04001	 mov       r4, #1
  001e0	e380220a	 orr       r2, r0, #0xA, 4

; 432  :             if (pBytesReturned)

  001e4	e59d0024	 ldr       r0, [sp, #0x24]
  001e8	e3813001	 orr       r3, r1, #1
  001ec	e5874044	 str       r4, [r7, #0x44]
  001f0	e5872048	 str       r2, [r7, #0x48]
  001f4	e3500000	 cmp       r0, #0
  001f8	e587304c	 str       r3, [r7, #0x4C]
  001fc	0affffb7	 beq       |$L37029|

; 433  :                 *pBytesReturned = sizeof(STORAGEDEVICEINFO);

  00200	e3a01050	 mov       r1, #0x50
  00204	e5801000	 str       r1, [r0]
  00208	e1a00004	 mov       r0, r4

; 452  :     }
; 453  : }   


  0020c	e8bd83f0	 ldmia     sp!, {r4 - r9, pc}
  00210		 |$L37261|
  00210	00000000	 DCD       |??_C@_1M@LBOO@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?$AA@|
  00214	00071c24	 DCD       0x71c24
  00218	00079c0c	 DCD       0x79c0c
  0021c	00075c08	 DCD       0x75c08
  00220	00071c04	 DCD       0x71c04
  00224		 |$M37258|

			 ENDP  ; |DSK_IOControl|

	EXPORT	|DSK_Read|

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

  00000			 AREA	 |.pdata$$DSK_Read|, PDATA, SELECTION=5, ASSOC=|.text| { |DSK_Read| } ; comdat associative
|$T37267| DCD	|DSK_Read|
	DCD	0x40000200
; Function compile flags: /Ogsy

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

  00000		 |DSK_Read| PROC

; 456  : DWORD DSK_Read(DWORD Handle, LPVOID pBuffer, DWORD dwNumBytes){return 0;}

  00000		 |$M37265|
  00000	e3a00000	 mov       r0, #0
  00004	e1a0f00e	 mov       pc, lr
  00008		 |$M37266|

			 ENDP  ; |DSK_Read|

	EXPORT	|DSK_Write|

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

  00000			 AREA	 |.pdata$$DSK_Write|, PDATA, SELECTION=5, ASSOC=|.text| { |DSK_Write| } ; comdat associative
|$T37274| DCD	|DSK_Write|
	DCD	0x40000200
; Function compile flags: /Ogsy

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

  00000		 |DSK_Write| PROC

; 457  : DWORD DSK_Write(DWORD Handle, LPCVOID pBuffer, DWORD dwNumBytes){return 0;}

  00000		 |$M37272|
  00000	e3a00000	 mov       r0, #0
  00004	e1a0f00e	 mov       pc, lr
  00008		 |$M37273|

			 ENDP  ; |DSK_Write|

	EXPORT	|DSK_Seek|

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

  00000			 AREA	 |.pdata$$DSK_Seek|, PDATA, SELECTION=5, ASSOC=|.text| { |DSK_Seek| } ; comdat associative
|$T37281| DCD	|DSK_Seek|
	DCD	0x40000200
; Function compile flags: /Ogsy

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

  00000		 |DSK_Seek| PROC

; 458  : DWORD DSK_Seek(DWORD Handle, long lDistance, DWORD dwMoveMethod){return 0;}

  00000		 |$M37279|
  00000	e3a00000	 mov       r0, #0
  00004	e1a0f00e	 mov       pc, lr
  00008		 |$M37280|

			 ENDP  ; |DSK_Seek|

	EXPORT	|DSK_PowerUp|

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

  00000			 AREA	 |.pdata$$DSK_PowerUp|, PDATA, SELECTION=5, ASSOC=|.text| { |DSK_PowerUp| } ; comdat associative
|$T37287| DCD	|DSK_PowerUp|
	DCD	0x40000100
; Function compile flags: /Ogsy

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

  00000		 |DSK_PowerUp| PROC

; 460  : {

  00000		 |$M37285|

; 461  : 	

; 462  : }

  00000	e1a0f00e	 mov       pc, lr
  00004		 |$M37286|

			 ENDP  ; |DSK_PowerUp|

	EXPORT	|DSK_PowerDown|

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

  00000			 AREA	 |.pdata$$DSK_PowerDown|, PDATA, SELECTION=5, ASSOC=|.text| { |DSK_PowerDown| } ; comdat associative
|$T37293| DCD	|DSK_PowerDown|
	DCD	0x40000100
; Function compile flags: /Ogsy

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

  00000		 |DSK_PowerDown| PROC

; 464  : {

  00000		 |$M37291|

; 465  : 	

; 466  : }

  00000	e1a0f00e	 mov       pc, lr
  00004		 |$M37292|

			 ENDP  ; |DSK_PowerDown|

	EXPORT	|IsCardInserted|
	IMPORT	|is_device_changed|

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

  00000			 AREA	 |.pdata$$IsCardInserted|, PDATA, SELECTION=5, ASSOC=|.text| { |IsCardInserted| } ; comdat associative
|$T37302| DCD	|IsCardInserted|
	DCD	0x40000901
; Function compile flags: /Ogsy

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

  00000		 |IsCardInserted| PROC

; 476  : {

  00000	e52de004	 str       lr, [sp, #-4]!
  00004		 |$M37300|

; 477  :     INT16 logical_drive;
; 478  : 
; 479  :     logical_drive = (0xFFFF & (INT16)pDisk->d_DrvNo); 

  00004	e5900018	 ldr       r0, [r0, #0x18]
  00008	e1a01800	 mov       r1, r0, lsl #16
  0000c	e1a00821	 mov       r0, r1, lsr #16

; 480  : 
; 481  : 
; 482  :     

; 483  :     if (is_device_changed (logical_drive))

  00010	eb000000	 bl        is_device_changed
  00014	e3500000	 cmp       r0, #0

; 484  :     return FALSE;

  00018	e3a00000	 mov       r0, #0

; 485  : 
; 486  :     return TRUE;

  0001c	03a00001	 moveq     r0, #1

; 487  : 
; 488  : }   


  00020	e8bd8000	 ldmia     sp!, {pc}
  00024		 |$M37301|

			 ENDP  ; |IsCardInserted|

	EXPORT	|??_C@_1EM@DAPE@?$AAM?$AAm?$AAc?$AAD?$AAi?$AAs?$AAk?$AA?5?$AAL?$AAo?$AAc?$AAa?$AAl?$AAA?$AAl?$AAl?$AAo?$AAc?$AA?$CI?$AAP@| [ DATA ] ; `string'
	IMPORT	|RegCloseKey|
	IMPORT	|InitDisk|
	IMPORT	|OpenDriverKey|
	IMPORT	|GetLastError|
	IMPORT	|wcslen|

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

  00000			 AREA	 |.pdata$$mmcinit|, PDATA, SELECTION=5, ASSOC=|.text| { |mmcinit| } ; comdat associative
|$T37314| DCD	|mmcinit|
	DCD	0x40002601

  00000			 AREA	 |.rdata| { |??_C@_1EM@DAPE@?$AAM?$AAm?$AAc?$AAD?$AAi?$AAs?$AAk?$AA?5?$AAL?$AAo?$AAc?$AAa?$AAl?$AAA?$AAl?$AAl?$AAo?$AAc?$AA?$CI?$AAP@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EM@DAPE@?$AAM?$AAm?$AAc?$AAD?$AAi?$AAs?$AAk?$AA?5?$AAL?$AAo?$AAc?$AAa?$AAl?$AAA?$AAl?$AAl?$AAo?$AAc?$AA?$CI?$AAP@| DCB "M"
	DCB	0x0, "m", 0x0, "c", 0x0, "D", 0x0, "i", 0x0, "s", 0x0, "k"
	DCB	0x0, " ", 0x0, "L", 0x0, "o", 0x0, "c", 0x0, "a", 0x0, "l"
	DCB	0x0, "A", 0x0, "l", 0x0, "l", 0x0, "o", 0x0, "c", 0x0, "("
	DCB	0x0, "P", 0x0, "D", 0x0, "I", 0x0, "S", 0x0, "K", 0x0, ")"
	DCB	0x0, " ", 0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e"
	DCB	0x0, "d", 0x0, " ", 0x0, "%", 0x0, "d", 0x0, 0xd, 0x0, 0xa
	DCB	0x0, 0x0, 0x0				; `string'
; Function compile flags: /Ogsy

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

  00000		 |mmcinit| PROC

; 505  : {

  00000	e92d4030	 stmdb     sp!, {r4, r5, lr}
  00004		 |$M37312|
  00004	e1a04000	 mov       r4, r0

; 506  :     DWORD status;
; 507  :     PDISK pDisk;
; 508  :     HKEY hKey;
; 509  : 
; 510  :     pDisk = CreateDiskObject();

  00008	eb000000	 bl        CreateDiskObject
  0000c	e1b05000	 movs      r5, r0

; 511  :     if (pDisk == NULL) {

  00010	1a000004	 bne       |$L37098|

; 512  :     RETAILMSG(1, (TEXT("MmcDisk LocalAlloc(PDISK) failed %d\r\n"), GetLastError()));

  00014	eb000000	 bl        GetLastError
  00018	e1a01000	 mov       r1, r0
  0001c	e59f0070	 ldr       r0, [pc, #0x70]
  00020	eb000000	 bl        NKDbgPrintfW

; 513  :     return NULL;

  00024	ea000017	 b         |$L37311|
  00028		 |$L37098|

; 514  :     }
; 515  :     if (pDisk->d_ActivePath = LocalAlloc(LPTR, wcslen(ActiveKey)*sizeof(WCHAR)+sizeof(WCHAR))) {

  00028	e1a00004	 mov       r0, r4
  0002c	eb000000	 bl        wcslen
  00030	e2801001	 add       r1, r0, #1
  00034	e1a01081	 mov       r1, r1, lsl #1
  00038	e3a00040	 mov       r0, #0x40
  0003c	eb000000	 bl        LocalAlloc
  00040	e3500000	 cmp       r0, #0
  00044	e5850044	 str       r0, [r5, #0x44]

; 516  :     wcscpy(pDisk->d_ActivePath, ActiveKey);

  00048	11a01004	 movne     r1, r4
  0004c	1b000000	 blne      wcscpy

; 517  :     }
; 518  : 
; 519  : 
; 520  : 	hKey = OpenDriverKey( ActiveKey);

  00050	e1a00004	 mov       r0, r4
  00054	eb000000	 bl        OpenDriverKey

; 521  : 	RegCloseKey( hKey);

  00058	eb000000	 bl        RegCloseKey

; 522  :     

; 523  :     

; 524  :     

; 525  :     status = InitDisk(pDisk);

  0005c	e1a00005	 mov       r0, r5
  00060	eb000000	 bl        InitDisk

; 526  :     if (status) {

  00064	e3500000	 cmp       r0, #0

; 527  :     goto ci_fail;
; 528  :     }
; 529  : 
; 530  : 
; 531  : 
; 532  :     if (pDisk->d_DiskCardState == STATE_INITING) {

  00068	0595001c	 ldreq     r0, [r5, #0x1C]
  0006c	03500001	 cmpeq     r0, #1

; 533  :     pDisk->d_DiskCardState = STATE_CLOSED;

  00070	03a00002	 moveq     r0, #2
  00074	0585001c	 streq     r0, [r5, #0x1C]
  00078	01a00005	 moveq     r0, r5

; 544  : }   


  0007c	08bd8030	 ldmeqia   sp!, {r4, r5, pc}
  00080		 |$ci_fail$37105|

; 534  :     return pDisk;
; 535  :     }
; 536  : 
; 537  : 
; 538  : ci_fail:
; 539  : 
; 540  : 
; 541  : 
; 542  :     CloseDisk(pDisk);

  00080	e1a00005	 mov       r0, r5
  00084	eb000000	 bl        CloseDisk
  00088		 |$L37311|

; 543  :     return NULL;

  00088	e3a05000	 mov       r5, #0

; 513  :     return NULL;

  0008c	e1a00005	 mov       r0, r5

; 544  : }   


  00090	e8bd8030	 ldmia     sp!, {r4, r5, pc}
  00094		 |$L37316|
  00094	00000000	 DCD       |??_C@_1EM@DAPE@?$AAM?$AAm?$AAc?$AAD?$AAi?$AAs?$AAk?$AA?5?$AAL?$AAo?$AAc?$AAa?$AAl?$AAA?$AAl?$AAl?$AAo?$AAc?$AA?$CI?$AAP@|
  00098		 |$M37313|

			 ENDP  ; |mmcinit|

	END

⌨️ 快捷键说明

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