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

📄 system.cod

📁 ARM对MMC卡的编程文档
💻 COD
📖 第 1 页 / 共 4 页
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 12.20.9615 

	TTL	c:\wince420\platform\sdklh7a404\drivers\sdmmc\driver\.\system.c
	CODE32

  00000			 AREA	 |.drectve|, DRECTVE
	DCB	"-defaultlib:coredll.lib "
	DCB	"-defaultlib:corelibc.lib "

	EXPORT	|dpCurSettings| [ DATA ]

  00000			 AREA	 |.data|, DATA
	 COMMON	|v_DiskCrit|, 0x14

	 COMMON	|v_DiskList|, 0x4

	 COMMON	|virtime|, 0x4

	 COMMON	|multipleRdWr|, 0x2


  00000			 AREA	 |.rdata|, DATA, READONLY
|BLOCK_DRIVER_GUID| DCD 0xa4e7edda
	DCW	0xe575
	DCW	0x4252
	DCB	0x9d
	DCB	0x6b
	DCB	0x41
	DCB	0x95
	DCB	0xd4
	DCB	0x8b
	DCB	0xb8
	DCB	0x65
|STORE_MOUNT_GUID| DCD 0xc1115848
	DCW	0x46fd
	DCW	0x4976
	DCB	0xbd
	DCB	0xe9
	DCB	0xd7
	DCB	0x94
	DCB	0x48
	DCB	0x45
	DCB	0x70
	DCB	0x4
|FATFS_MOUNT_GUID| DCD 0x169e1941
	DCW	0x4ce
	DCW	0x4690
	DCB	0x97
	DCB	0xac
	DCB	0x77
	DCB	0x61
	DCB	0x87
	DCB	0xeb
	DCB	0x67
	DCB	0xcc
|CDFS_MOUNT_GUID| DCD 0x72d75746
	DCW	0xd54a
	DCW	0x4487
	DCB	0xb7
	DCB	0xa1
	DCB	0x94
	DCB	0xc
	DCB	0x9a
	DCB	0x3f
	DCB	0x25
	DCB	0x9a
|UDFS_MOUNT_GUID| DCD 0x462feda9
	DCW	0xd478
	DCW	0x4b00
	DCB	0x86
	DCB	0xbb
	DCB	0x51
	DCB	0xa8
	DCB	0xe3
	DCB	0xd1
	DCB	0x8
	DCB	0x90
|CDDA_MOUNT_GUID| DCD 0xba6b1343
	DCW	0x7980
	DCW	0x4d0c
	DCB	0x92
	DCB	0x90
	DCB	0x76
	DCB	0x2d
	DCB	0x52
	DCB	0x7b
	DCB	0x33
	DCB	0xab
|STOREMGR_DRIVER_GUID| DCD 0x14acdee6
	DCW	0x5cf3
	DCW	0x496b
	DCB	0xb3
	DCB	0x9d
	DCB	0x89
	DCB	0x54
	DCB	0xc9
	DCB	0x6d
	DCB	0xf0
	DCB	0x2

  00000			 AREA	 |.data|, DATA
|dpCurSettings| DCB "S", 0x0, "D", 0x0, "M", 0x0, "M", 0x0, "C", 0x0, " ", 0x0
	DCB	"D", 0x0, "i", 0x0, "s", 0x0, "k", 0x0, 0x0, 0x0
	%	42
	DCB	"E", 0x0, "r", 0x0, "r", 0x0, "o", 0x0, "r", 0x0, "s", 0x0
	DCB	0x0, 0x0
	%	50
	DCB	"W", 0x0, "a", 0x0, "r", 0x0, "n", 0x0, "i", 0x0, "n", 0x0
	DCB	"g", 0x0, "s", 0x0, 0x0, 0x0
	%	46
	DCB	"F", 0x0, "u", 0x0, "n", 0x0, "c", 0x0, "t", 0x0, "i", 0x0
	DCB	"o", 0x0, "n", 0x0, "s", 0x0, 0x0, 0x0
	%	44
	DCB	"I", 0x0, "n", 0x0, "i", 0x0, "t", 0x0, "i", 0x0, "a", 0x0
	DCB	"l", 0x0, "i", 0x0, "z", 0x0, "a", 0x0, "t", 0x0, "i", 0x0
	DCB	"o", 0x0, "n", 0x0, 0x0, 0x0
	%	34
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
	%	44
	DCB	"D", 0x0, "i", 0x0, "s", 0x0, "k", 0x0, " ", 0x0, "I", 0x0
	DCB	"/", 0x0, "O", 0x0, 0x0, 0x0
	%	46
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
	%	44
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
	%	44
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
	%	44
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
	%	44
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
	%	44
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
	%	44
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
	%	44
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
	%	44
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
	%	44
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
	%	44
	DCD	0x1
	EXPORT	|SDMMCDiskEntry|
	EXPORT	|??_C@_1DI@NJBG@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?9?$AA?9?$AAD?$AAL?$AAL?$AA_?$AAP?$AAR?$AAO?$AAC?$AAE?$AAS?$AAS?$AA_?$AAA@| [ DATA ] ; `string'
	EXPORT	|??_C@_1DI@BFBF@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?9?$AA?9?$AAD?$AAL?$AAL?$AA_?$AAP?$AAR?$AAO?$AAC?$AAE?$AAS?$AAS?$AA_?$AAD@| [ DATA ] ; `string'
	IMPORT	|InitializeCriticalSection|
	IMPORT	|DeleteCriticalSection|
	IMPORT	|DisableThreadLibraryCalls|
	IMPORT	|NKDbgPrintfW|
; File c:\wince420\platform\sdklh7a404\drivers\sdmmc\driver\system.c

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

  00000			 AREA	 |.pdata$$SDMMCDiskEntry|, PDATA, SELECTION=5, ASSOC=|.text| { |SDMMCDiskEntry| } ; comdat associative
|$T37180| DCD	|SDMMCDiskEntry|
	DCD	0x40001601

  00000			 AREA	 |.rdata| { |??_C@_1DI@NJBG@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?9?$AA?9?$AAD?$AAL?$AAL?$AA_?$AAP?$AAR?$AAO?$AAC?$AAE?$AAS?$AAS?$AA_?$AAA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1DI@NJBG@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?9?$AA?9?$AAD?$AAL?$AAL?$AA_?$AAP?$AAR?$AAO?$AAC?$AAE?$AAS?$AAS?$AA_?$AAA@| DCB "S"
	DCB	0x0, "D", 0x0, "M", 0x0, "M", 0x0, "C", 0x0, "-", 0x0, "-"
	DCB	0x0, "D", 0x0, "L", 0x0, "L", 0x0, "_", 0x0, "P", 0x0, "R"
	DCB	0x0, "O", 0x0, "C", 0x0, "E", 0x0, "S", 0x0, "S", 0x0, "_"
	DCB	0x0, "A", 0x0, "T", 0x0, "T", 0x0, "A", 0x0, "C", 0x0, "H"
	DCB	0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0	; `string'

  00000			 AREA	 |.rdata| { |??_C@_1DI@BFBF@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?9?$AA?9?$AAD?$AAL?$AAL?$AA_?$AAP?$AAR?$AAO?$AAC?$AAE?$AAS?$AAS?$AA_?$AAD@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1DI@BFBF@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?9?$AA?9?$AAD?$AAL?$AAL?$AA_?$AAP?$AAR?$AAO?$AAC?$AAE?$AAS?$AAS?$AA_?$AAD@| DCB "S"
	DCB	0x0, "D", 0x0, "M", 0x0, "M", 0x0, "C", 0x0, "-", 0x0, "-"
	DCB	0x0, "D", 0x0, "L", 0x0, "L", 0x0, "_", 0x0, "P", 0x0, "R"
	DCB	0x0, "O", 0x0, "C", 0x0, "E", 0x0, "S", 0x0, "S", 0x0, "_"
	DCB	0x0, "D", 0x0, "E", 0x0, "T", 0x0, "A", 0x0, "C", 0x0, "H"
	DCB	0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0	; `string'
; Function compile flags: /Ogsy

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

  00000		 |SDMMCDiskEntry| PROC

; 107  : {

  00000	e92d4010	 stmdb     sp!, {r4, lr}
  00004		 |$M37178|
  00004	e1a04000	 mov       r4, r0

; 108  :     switch(Reason) {

  00008	e3510000	 cmp       r1, #0
  0000c	0a000007	 beq       |$L36921|
  00010	e3510001	 cmp       r1, #1
  00014	1a000009	 bne       |$L36914|

; 109  :     case DLL_PROCESS_ATTACH:
; 110  :     DEBUGREGISTER(DllInstance);
; 111  :     InitializeCriticalSection(&v_DiskCrit);

  00018	e59f0030	 ldr       r0, [pc, #0x30]
  0001c	eb000000	 bl        InitializeCriticalSection

; 112  :     DisableThreadLibraryCalls((HMODULE) DllInstance);

  00020	e1a00004	 mov       r0, r4
  00024	eb000000	 bl        DisableThreadLibraryCalls

; 113  :     RETAILMSG(1, (TEXT("SDMMC--DLL_PROCESS_ATTACH\r\n")));

  00028	e59f0024	 ldr       r0, [pc, #0x24]

; 114  :     return TRUE;

  0002c	ea000002	 b         |$L37177|
  00030		 |$L36921|

; 115  : 
; 116  :     case DLL_PROCESS_DETACH:
; 117  :     DeleteCriticalSection(&v_DiskCrit);

  00030	e59f0018	 ldr       r0, [pc, #0x18]
  00034	eb000000	 bl        DeleteCriticalSection

; 118  :     RETAILMSG(1, (TEXT("SDMMC--DLL_PROCESS_DETACH\r\n")));

  00038	e59f000c	 ldr       r0, [pc, #0xC]
  0003c		 |$L37177|
  0003c	eb000000	 bl        NKDbgPrintfW
  00040		 |$L36914|

; 119  :     break;
; 120  :     }
; 121  :     return TRUE;

  00040	e3a00001	 mov       r0, #1

; 122  : }   


  00044	e8bd4010	 ldmia     sp!, {r4, lr}
  00048	e12fff1e	 bx        lr
  0004c		 |$L37182|
  0004c	00000000	 DCD       |??_C@_1DI@BFBF@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?9?$AA?9?$AAD?$AAL?$AAL?$AA_?$AAP?$AAR?$AAO?$AAC?$AAE?$AAS?$AAS?$AA_?$AAD@|
  00050	00000000	 DCD       |v_DiskCrit|
  00054	00000000	 DCD       |??_C@_1DI@NJBG@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?9?$AA?9?$AAD?$AAL?$AAL?$AA_?$AAP?$AAR?$AAO?$AAC?$AAE?$AAS?$AAS?$AA_?$AAA@|
  00058		 |$M37179|

			 ENDP  ; |SDMMCDiskEntry|

	EXPORT	|CreateDiskObject|
	IMPORT	|EnterCriticalSection|
	IMPORT	|LeaveCriticalSection|
	IMPORT	|LocalAlloc|

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

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

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

  00000		 |CreateDiskObject| PROC

; 130  : {

  00000	e92d4010	 stmdb     sp!, {r4, lr}
  00004		 |$M37187|

; 131  :     PDISK pDisk;
; 132  : 
; 133  : 

; 134  :     pDisk = LocalAlloc(LPTR, sizeof(DISK));

  00004	e3a01048	 mov       r1, #0x48
  00008	e3a00040	 mov       r0, #0x40
  0000c	eb000000	 bl        LocalAlloc
  00010	e1b04000	 movs      r4, r0

; 135  :     if (pDisk != NULL) {

  00014	0a00000e	 beq       |$L36929|

; 136  :     pDisk->d_OpenCount = 0;

  00018	e3a00000	 mov       r0, #0
  0001c	e584003c	 str       r0, [r4, #0x3C]

; 137  :     pDisk->d_ActivePath = NULL;

  00020	e5840044	 str       r0, [r4, #0x44]

; 138  :     InitializeCriticalSection(&(pDisk->d_DiskCardCrit));

  00024	e2840004	 add       r0, r4, #4
  00028	eb000000	 bl        InitializeCriticalSection

; 139  :     pDisk->d_DiskCardState = STATE_INITING;
; 140  :     EnterCriticalSection(&v_DiskCrit);

  0002c	e59f002c	 ldr       r0, [pc, #0x2C]
  00030	e3a03001	 mov       r3, #1
  00034	e584301c	 str       r3, [r4, #0x1C]
  00038	eb000000	 bl        EnterCriticalSection

; 141  :     pDisk->d_next = v_DiskList;

  0003c	e59f3020	 ldr       r3, [pc, #0x20]
  00040	e5930000	 ldr       r0, [r3]
  00044	e5840000	 str       r0, [r4]

; 142  :     v_DiskList = pDisk;
; 143  :     LeaveCriticalSection(&v_DiskCrit);

  00048	e59f0010	 ldr       r0, [pc, #0x10]
  0004c	e5834000	 str       r4, [r3]
  00050	eb000000	 bl        LeaveCriticalSection
  00054		 |$L36929|

; 144  :     }
; 145  :     return pDisk;

  00054	e1a00004	 mov       r0, r4

; 146  : }   


  00058	e8bd4010	 ldmia     sp!, {r4, lr}
  0005c	e12fff1e	 bx        lr
  00060		 |$L37191|
  00060	00000000	 DCD       |v_DiskCrit|
  00064	00000000	 DCD       |v_DiskList|
  00068		 |$M37188|

			 ENDP  ; |CreateDiskObject|

	EXPORT	|IsValidDisk|

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

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

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

  00000		 |IsValidDisk| PROC

; 158  : {

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

; 159  :     PDISK pd;
; 160  :     bool ret = FALSE;
; 161  : 	
; 162  : 

; 163  :     EnterCriticalSection(&v_DiskCrit);

  00008	e59f0040	 ldr       r0, [pc, #0x40]
  0000c	e3a05000	 mov       r5, #0
  00010	eb000000	 bl        EnterCriticalSection

; 164  :     pd = v_DiskList;

  00014	e59f3038	 ldr       r3, [pc, #0x38]
  00018	e5930000	 ldr       r0, [r3]
  0001c	ea000002	 b         |$L37201|
  00020		 |$L36937|

; 166  :     if (pd == pDisk) {

  00020	e1500004	 cmp       r0, r4
  00024	0a000003	 beq       |$L37195|

; 168  :         break;
; 169  :     }
; 170  :     pd = pd->d_next;

  00028	e5900000	 ldr       r0, [r0]
  0002c		 |$L37201|
  0002c	e3500000	 cmp       r0, #0

; 165  :     while (pd) {

⌨️ 快捷键说明

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