虛擬磁盤(pán)的設(shè)計(jì)與操作_第1頁(yè)
虛擬磁盤(pán)的設(shè)計(jì)與操作_第2頁(yè)
虛擬磁盤(pán)的設(shè)計(jì)與操作_第3頁(yè)
虛擬磁盤(pán)的設(shè)計(jì)與操作_第4頁(yè)
虛擬磁盤(pán)的設(shè)計(jì)與操作_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、虛擬磁盤(pán)的的設(shè)計(jì)與操操作 李季季季摘要:通常情況下下是在磁盤(pán)盤(pán)上建立文文件系統(tǒng)即即硬盤(pán)分區(qū)區(qū),文件系系統(tǒng)驅(qū)動(dòng)程程序(FSSD)已經(jīng)經(jīng)實(shí)現(xiàn)了在在硬盤(pán)上創(chuàng)創(chuàng)建和管理理文件,本本系統(tǒng)主要要實(shí)現(xiàn)將一一個(gè)文件虛虛擬成一個(gè)個(gè)相應(yīng)的磁磁盤(pán),在文文件系統(tǒng)驅(qū)驅(qū)動(dòng)程序的的基礎(chǔ)之上上,實(shí)現(xiàn)基基于虛擬設(shè)設(shè)備的文件件系統(tǒng),這這種虛擬技技術(shù)得到了了很多應(yīng)用用,例如虛虛擬光驅(qū)就就是其中之之一,我們們將對(duì)磁盤(pán)盤(pán)進(jìn)行相關(guān)關(guān)的操作。關(guān)鍵字: 函數(shù) 加載模塊塊 讀寫(xiě)操作作 卸載載模塊 格式式化 一整體功功能概述: 通過(guò)命令行行輸入/mmountt的加載相相應(yīng)虛擬磁磁盤(pán)的命令令,執(zhí)行完完畢后便可可以在“我的電腦腦”中看到又又多出了與

2、與命令行輸輸入相應(yīng)的的盤(pán)符,通通過(guò)forrmat將將磁盤(pán)格式式化或通過(guò)過(guò)右鍵選擇擇格式化成成相應(yīng)格式式后,便可可以對(duì)它操操作。通過(guò)命令行行輸入/mmountt的加載相相應(yīng)虛擬磁磁盤(pán)的命令令,執(zhí)行完完后便可以以在“我的電腦腦”中看到又又多出了一一個(gè)虛擬的的磁盤(pán),便可可以對(duì)它執(zhí)執(zhí)行讀寫(xiě)操操作。在命令行下下輸入/uumounnt的卸載載相應(yīng)虛擬擬磁盤(pán)的命命令,執(zhí)行行完后便可可以卸載除除剛才加載載的虛擬磁磁盤(pán)。二設(shè)計(jì)的的描述: 通常情況況下是在磁磁盤(pán)上建立立文件系統(tǒng)統(tǒng)即硬盤(pán)分分區(qū),文件件系統(tǒng)驅(qū)動(dòng)動(dòng)程序(FFSD)已已經(jīng)實(shí)現(xiàn)了了在硬盤(pán)上上創(chuàng)建和管管理文件,本本系統(tǒng)主要要實(shí)現(xiàn)將一一個(gè)文件虛虛擬成一個(gè)個(gè)相應(yīng)

3、的磁磁盤(pán),在文文件系統(tǒng)驅(qū)驅(qū)動(dòng)程序的的基礎(chǔ)之上上,實(shí)現(xiàn)基基于虛擬設(shè)設(shè)備的文件件系統(tǒng),這這種虛擬技技術(shù)得到了了很多應(yīng)用用,例如虛虛擬光驅(qū)就就是其中之之一。虛擬擬磁盤(pán)文件件系統(tǒng)經(jīng)過(guò)過(guò)安裝可以以模擬真實(shí)實(shí)的硬盤(pán),支支持各種文文件系統(tǒng)功功能。三基本的的數(shù)據(jù)結(jié)構(gòu)構(gòu)(1)全局局變量diir_haandleeHANDLLE diir_haandlee;該全局變量量用于指向向一個(gè)“目錄對(duì)象象”,存放本本驅(qū)動(dòng)程序序創(chuàng)建的所所有的磁盤(pán)盤(pán)對(duì)象。(2)模擬擬磁盤(pán)文件件信息結(jié)構(gòu)構(gòu) OPEEN_FIILE_IINFORRMATIIONtypeddef sstrucct _OOPEN_FILEE_INFFORMAATIONN

4、DEVICCE_TYYPE DeviiceTyype;/所模擬擬的磁盤(pán)的的類型BOOLEEAN ReaddOnlyy;/是是否設(shè)置虛虛擬磁盤(pán)為為只讀LARGEE_INTTEGERR FileeSizee;/本本文件的大大小USHORRT FileeNameeLenggth;/文件名名的長(zhǎng)度UCHARR FileeNamee1;/文件件名字符串串OPENN_FILLE_INNFORMMATIOON;該結(jié)構(gòu)保存存了用于虛虛擬磁盤(pán)的的文件的詳詳細(xì)信息。在應(yīng)用程程序利用mmountt命令制定定這個(gè)文件件時(shí),會(huì)將將文件的信信息組成這這樣一個(gè)結(jié)結(jié)構(gòu)后作為為參數(shù)傳入入內(nèi)核。驅(qū)驅(qū)動(dòng)程序會(huì)會(huì)抽取這些些信息,并并

5、把它們作作為虛擬磁磁盤(pán)的磁盤(pán)盤(pán)信息,例例如磁盤(pán)的的大小好只只讀屬性。(3)設(shè)備備擴(kuò)展結(jié)構(gòu)構(gòu) DEVVICE_EXTEENSIOON:自定義的磁磁盤(pán)信息結(jié)結(jié)構(gòu),用來(lái)來(lái)保存設(shè)備備的細(xì)節(jié)以以及對(duì)設(shè)備備的編程方方式。Typeddef sstrucct _DDEVICCE_EXXTESIION BOOOLEAAN meddia_iin_deevicee; HAANDLEE fille_haandlee;/文文件句柄 ANNSI_SSTRINNG fille_naame;/文件名名 LAARGE_INTEEGER fille_siize;/文件的的大小 BOOOLEAAN reaad_onnly;/只讀屬

6、屬性 PSSECURRITY_CLIEENT_CCONTEEXT seccuritty_cllientt_conntextt; LIIST_EENTRYY lisst_heead; KSSPIN_LOCKK lisst_loock; KEEVENTT reqquestt_eveent; PVVOID thrread_poinnter; BOOOLEAAN terrminaate_tthreaad;DEVIICE_EEXTENNSIONN,*PDDEVICCE_EXXTENSSION;本驅(qū)動(dòng)程序序所創(chuàng)建的的虛擬對(duì)象象均為自己己維護(hù)這樣樣一個(gè)數(shù)據(jù)據(jù)結(jié)構(gòu)。實(shí)實(shí)際上,所所有內(nèi)核驅(qū)驅(qū)動(dòng)程序中中的設(shè)備對(duì)對(duì)

7、象都維護(hù)護(hù)這樣一個(gè)個(gè)數(shù)據(jù)結(jié)構(gòu)構(gòu)。其主要要作用就是是在此保存存對(duì)應(yīng)設(shè)備備的一些參參數(shù),使得得所有有關(guān)關(guān)此設(shè)備的的處理都可可以通過(guò)設(shè)設(shè)備對(duì)象訪訪問(wèn)到這些些信息。相關(guān)函數(shù)介介紹(1)入口口函數(shù) DDirveerEnttryDirveerEnttry( IN PDDRIVEER_OBBJECTT DriiverOObjecct, IN PUUNICOODE_SSTRINNG ReggisteerPatth)該函數(shù)主要要實(shí)現(xiàn)建立立相應(yīng)個(gè)數(shù)數(shù)的磁盤(pán)對(duì)對(duì)象和向II/O管理理器注冊(cè)44個(gè)分發(fā)例例程以處理理來(lái)自應(yīng)用用程序的相相應(yīng)請(qǐng)求。(2)分發(fā)發(fā)例程 FFileDDiskCCreatteClooseFileDD

8、iskCCreatteCloose( INN PPDEVIICE_OOBJECCT DDriveerObjject, INN PPIRP IIrp)在這個(gè)函數(shù)數(shù)中相應(yīng)打打開(kāi)文件和和關(guān)閉文件件對(duì)象的請(qǐng)請(qǐng)求,對(duì)應(yīng)應(yīng)主功能代代碼IRPP_MJ_CREAATE和IIPR_MMJ_CLLOSE。在函數(shù)中中就是簡(jiǎn)單單的返回打打開(kāi)成功的的標(biāo)記,不不需要完成成額外的工工作。(3)分發(fā)發(fā)例程FiileDiiskReeadWrriteFileDDiskRReadWWritee(IN PDEVVICE_OBJEECT DeviiceObbjectt,IN PIRPP Irp)這個(gè)函數(shù)完完成對(duì)虛擬擬磁盤(pán)的讀讀寫(xiě),對(duì)應(yīng)

9、應(yīng)于主功能能代碼IRRP_MJJ_WRIITE和IIRP_MMJ_REEAD。在進(jìn)行讀寫(xiě)寫(xiě)之前先確確認(rèn)設(shè)備是是否存在。(4)分發(fā)發(fā)例程FiileDiiskDeeviceeConttrolFileDDiskDDevicceConntroll( IN PDDEVICCE_OBBJECTT DeeviceeObjeect, IN PIIRP Irrp)該函數(shù)處理理發(fā)送到虛虛擬磁盤(pán)的的控制信息息。(5)分發(fā)發(fā)例程FiileDiiskUnnloaddFileDDiskUUnloaad( IIN PDRRIVERR_OBJJECT Drriverrobjeect)用于卸載驅(qū)驅(qū)動(dòng)程序。通過(guò)調(diào)用用輔助函數(shù)數(shù)F

10、ileeDiskkDeleeteDeevicee卸載本驅(qū)驅(qū)動(dòng)程序創(chuàng)創(chuàng)建的各設(shè)設(shè)備對(duì)象和和對(duì)應(yīng)的設(shè)設(shè)備對(duì)象工工作線程。(6)輔助助函數(shù) 輔助函函數(shù)有 FFileDDiskCCreatteDevvice、FileeDiskkThreead、FFileDDiskDDeletteDevvice、FileeDiskkOpennFilee和FilleDisskClooseFiile這些些輔助函數(shù)數(shù)被前面的的各個(gè)函數(shù)數(shù)調(diào)用,以以完成相對(duì)對(duì)應(yīng)的任務(wù)務(wù),其中最最后兩個(gè)函函數(shù)在FiileDiiskThhreadd中進(jìn)行調(diào)調(diào)用,完成成相對(duì)應(yīng)的的工作。程序主要模模塊代碼虛擬磁盤(pán)或或光驅(qū)的加加載模塊Int FFileD

11、DiskMMountt(Int DeviiceNuumberr,/設(shè)設(shè)備號(hào) 00 1 22 3等POPENN_FILLE_INNFORMMATIOON OOpenFFileIInforrmatiion,/文件類類型信息Char Driiverlletteer,/卷名BOOLEEAN CdIImagee/是否否為CD) chhar VoluumeNaame=”. :”; chhar DeviiceNaame2255;/臨時(shí)時(shí)存放文件件名HANDLLE Devvice;/文件件句柄DWORDD ByttesReeturnned;/緩沖區(qū)區(qū)VolummeNamme4 = DDriveeLettter

12、;/將空空格用盤(pán)符符號(hào)代替 DDevicce = CreaateFiile( VVolummeNamme,/要打打開(kāi)的文件件的名字 GGENERRIC_RREAD | GEENERIIC_WRRITE,/ 訪訪問(wèn)模式 FFILE_SHARRE_REEAD | FILLE_SHHARE_WRITTE,/允許許對(duì)文件進(jìn)進(jìn)行讀寫(xiě)共共享訪問(wèn) NNULL, OOPEN_EXISSTINGG,/文件件必須已經(jīng)經(jīng)存在。/打開(kāi)一一個(gè)文件, 如果文文件不存在在函數(shù)將會(huì)會(huì)失敗 FFILE_FLAGG_NO_BUFFFERINNG,/禁止止對(duì)文件進(jìn)進(jìn)行緩沖處處理。文件件只能寫(xiě)入入磁盤(pán)卷的的扇區(qū)塊 NNULL );

13、iif (DDevicce != INVVALIDD_HANNDLE_VALUUE)/創(chuàng)建建文件成功功 SSetLaastErrror(ERROOR_BUUSY); PPrinttLasttErroor(&VVolummeNamme4); rreturrn -11; /上面面CreaateFiile的作作用是:判判斷文件是是否已經(jīng)存存在,存在在則設(shè)置錯(cuò)錯(cuò)誤信息,中中斷返回。不存在繼繼續(xù)向下執(zhí)執(zhí)行; iif (CCdImaage) ssprinntf(DDevicceNamme, DDEVICCE_NAAME_PPREFIIX CCd %u, DevviceNNumbeer);/格式化化輸出到D

14、DevicceNamme中DDevicceFiileDiisk CCd* eelse ssprinntf(DDevicceNamme, DDEVICCE_NAAME_PPREFIIX %u, DeviiceNuumberr);/格式化輸輸出到DeeviceeNamee中DeeviceeFilleDissk* iif (!DefiineDoosDevvice(/創(chuàng)建建一個(gè)指向向設(shè)備命名名空間的符符號(hào)鏈接,創(chuàng)創(chuàng)建失敗,輸輸出錯(cuò)誤信信息; DDDD_RRAW_TTARGEET_PAATH, &VoluumeNaame44,/盤(pán)符符號(hào),例如如Z: DDevicceNamme ) PPrinttLast

15、tErroor(&VVolummeNamme4); rreturrn -11;/返回回 DDevicce = CreaateFiile(/用CCreatteFille打開(kāi)上上面建立的的符號(hào)鏈接接 VVolummeNamme, GGENERRIC_RREAD | GEENERIIC_WRRITE, FFILE_SHARRE_REEAD | FILLE_SHHARE_WRITTE, NNULL, OOPEN_EXISSTINGG,/打開(kāi)開(kāi)一個(gè)文件件, 如果果文件不存存在函數(shù)將將會(huì)失敗,利利用DeffineDDosDeevicee創(chuàng)建VoolumeeNamee4與與DeviiceNaame的鏈鏈接故

16、文件件存在; FFILE_FLAGG_NO_BUFFFERINNG, NNULL ); iif (DDevicce = INVVALIDD_HANNDLE_VALUUE)/創(chuàng)建建失??; PPrinttLasttErroor(&VVolummeNamme4);/錯(cuò)誤誤信息; DDefinneDossDeviice(DDDD_RREMOVVE_DEEFINIITIONN, &VVolummeNamme4, NUULL);/刪除除前面建立立的符號(hào)鏈鏈接 rreturrn -11;/返回回 iif (!DeviiceIooConttrol( DDevicce, IIOCTLL_FILLE_DIISK_

17、OOPEN_FILEE, OOpenFFileIInforrmatiion, ssizeoof(OPPEN_FFILE_INFOORMATTION) + OOpenFFileIInforrmatiion-FileeNameeLenggth - 1, NNULL, 00, &ByteesRetturneed, NNULL )/創(chuàng)建建失敗 PPrinttLasttErroor(FFileDDisk:);/錯(cuò)誤誤處理 DDefinneDossDeviice(DDDD_RREMOVVE_DEEFINIITIONN, &VVolummeNamme4, NUULL);/刪除前面面建立的符符號(hào)鏈接 rret

18、urrn -11;/返回回 rreturrn 0;2.虛擬磁磁盤(pán)或光驅(qū)驅(qū)的卸載模模塊 int FFileDDiskUUmounnt(chhar DDriveeLettter) cchar VVolummeNamme = . :;/ . :特別特特別注意中中間有個(gè)空空格 HHANDLLE DDevicce; DDWORDD BBytessRetuurnedd; VVolummeNamme4 = DDriveeLettter;/將空空格用盤(pán)符符號(hào)代替 DDevicce = CreaateFiile(/此處處的作用是是判斷文件件是否存在在 VVolummeNamme, GGENERRIC_RREAD

19、 | GEENERIIC_WRRITE, FFILE_SHARRE_REEAD | FILLE_SHHARE_WRITTE, NNULL, OOPEN_EXISSTINGG,/文件件必須已經(jīng)經(jīng)存在。打打開(kāi)一個(gè)文文件, 如如果文件不不存在函數(shù)數(shù)將會(huì)失敗敗GetLLastEErrorr()函數(shù)數(shù)會(huì)捕獲消消息; FFILE_FLAGG_NO_BUFFFERINNG, NNULL );/ 返回一個(gè)個(gè)無(wú)效的文文件句柄,說(shuō)明要卸卸載的文件件系統(tǒng)根本本不存在 iif (DDevicce = INVVALIDD_HANNDLE_VALUUE) PPrinttLasttErroor(&VVolummeNamme

20、4);/比如如要?jiǎng)h除ZZ:但是ZZ不存在,便便會(huì)輸出錯(cuò)錯(cuò)誤“Z: 系系統(tǒng)找不到到指定的文文件?!?rreturrn -11;/返回回 /如果果返回一個(gè)個(gè)有效文件件句柄,則則虛擬的盤(pán)盤(pán)符存在/開(kāi)始始執(zhí)行/uumounnt的動(dòng)作作/包括括以下幾個(gè)個(gè)步驟:/11、鎖定當(dāng)當(dāng)前卷,通通過(guò)發(fā)送FFSCTLL_LOCCK_VOOLUMEE到設(shè)備驅(qū)驅(qū)動(dòng)實(shí)現(xiàn)/22、關(guān)閉所所有該卷上上打開(kāi)的所所有文件,通通過(guò)發(fā)送IIOCTLL_FILLE_DIISK_CCLOSEE_FILLE到設(shè)備備驅(qū)動(dòng)實(shí)現(xiàn)現(xiàn)/33、卸載該該卷,通過(guò)過(guò)發(fā)送FSSCTL_DISMMOUNTT_VOLLUME到到設(shè)備驅(qū)動(dòng)動(dòng)實(shí)現(xiàn)/44、解除該該卷的鎖

21、定定,通過(guò)發(fā)發(fā)送FSCCTL_UUNLOCCK_VOOLUMEE到設(shè)備驅(qū)驅(qū)動(dòng)實(shí)現(xiàn)/55、關(guān)閉設(shè)設(shè)備/66、刪除虛虛擬盤(pán)符 iif (!DeviiceIooConttrol( DDevicce, FFSCTLL_LOCCK_VOOLUMEE,/首先先我們得發(fā)發(fā)出FSCCTL_LLOCK_VOLUUME鎖住住光驅(qū)以防防止寫(xiě)入 NNULL, 00, NNULL, 00, &ByteesRetturneed, NNULL ) PPrinttLasttErroor(&VVolummeNamme4);/操作作失敗,GGetLaastErrror()函數(shù)會(huì)會(huì)捕獲消息息,則進(jìn)行行錯(cuò)誤處理理; rreturrn

22、 -11;/返回回 iif (!DeviiceIooConttrol( DDevicce, IIOCTLL_FILLE_DIISK_CCLOSEE_FILLE,/發(fā)出出IOCTTL_FIILE_DDISK_CLOSSE_FIILE,IIO的控制制信息 關(guān)關(guān)閉磁盤(pán)文文件 NNULL, 00, NNULL, 00, &ByteesRetturneed, NNULL ) PPrinttLasttErroor(FFileDDisk:);/操作作失敗,GGetLaastErrror()函數(shù)會(huì)會(huì)捕獲消息息,則進(jìn)行行錯(cuò)誤處理理; rreturrn -11;/返回回 iif (!DeviiceIooContt

23、rol( DDevicce, FFSCTLL_DISSMOUNNT_VOOLUMEE,/卸載載該卷,通通過(guò)發(fā)送FFSCTLL_DISSMOUNNT_VOOLUMEE到設(shè)備驅(qū)驅(qū)動(dòng)實(shí)現(xiàn) NNULL, 00, NNULL, 00, &ByteesRetturneed, NNULL ) PPrinttLasttErroor(&VVolummeNamme4);/操作作失敗,GGetLaastErrror()函數(shù)會(huì)會(huì)捕獲消息息,則進(jìn)行行錯(cuò)誤處理理; rreturrn -11;/返回回 iif (!DeviiceIooConttrol( DDevicce, FFSCTLL_UNLLOCK_VOLUUME,/

24、解除除該卷的鎖鎖定,通過(guò)過(guò)發(fā)送FSSCTL_UNLOOCK_VVOLUMME到設(shè)備備驅(qū)動(dòng)實(shí)現(xiàn)現(xiàn) NNULL, 00, NNULL, 00, &ByteesRetturneed, NNULL ) PPrinttLasttErroor(&VVolummeNamme4);/操作作失敗,GGetLaastErrror()函數(shù)會(huì)會(huì)捕獲消息息,則進(jìn)行行錯(cuò)誤處理理; rreturrn -11;/返回回 CCloseeHanddle(DDevicce);/關(guān)閉閉內(nèi)核對(duì)象象設(shè)備HAANDLEE iif (!DefiineDoosDevvice(/刪除除虛擬盤(pán)符符 DDDD_RREMOVVE_DEEFINIITI

25、ONN, &VoluumeNaame44, NNULL ) PPrinttLasttErroor(&VVolummeNamme4);/操作作失敗,GGetLaastErrror()函數(shù)會(huì)會(huì)捕獲消息息,則進(jìn)行行錯(cuò)誤處理理; rreturrn -11;/返回回虛擬盤(pán)符符 rreturrn 0;/正常常執(zhí)行結(jié)束束,返回int FFileDDiskSStatuus(chhar DDriveeLettter) cchar VVolummeNamme = . :;/ . :特別特特別注意中中間有個(gè)空空格 HHANDLLE DDevicce; PPOPENN_FILLE_INNFORMMATIOON OOp

26、enFFileIInforrmatiion; DDWORDD BBytessRetuurnedd; VVolummeNamme4 = DDriveeLettter;/將空空格用盤(pán)符符號(hào)代替 DDevicce = CreaateFiile(/此處處的作用是是判斷文件件是否存在在 VVolummeNamme, GGENERRIC_RREAD, FFILE_SHARRE_REEAD | FILLE_SHHARE_WRITTE, NNULL, OOPEN_EXISSTINGG,/文件件必須已經(jīng)經(jīng)存在。打打開(kāi)一個(gè)文文件, 如如果文件不不存在函數(shù)數(shù)將會(huì)失敗敗GetLLastEErrorr()函數(shù)數(shù)會(huì)捕獲消消息; FFILE_FLAGG_NO_BUFFFERINNG, NNULL );/ 返回一個(gè)個(gè)無(wú)效的文文件句柄,說(shuō)明文件件系統(tǒng)根本本不存在 iif (DDevicce = INVVALIDD_HANNDLE_VALU

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論