亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? verifyvds.c

?? 存取UDF格式的DVD光盤的驅動程序
?? C
字號:
#include "../nsrHdrs/nsr.h"#include <stdlib.h>#include <stdio.h>#include <string.h>#include <ctype.h>#include "chkudf.h"#include "protos.h"/*  * The following routine loads a VDS into memory.  Only the prevailing * descriptors are retained, with oddities noted on the way.  Since UDF * allows only one of each descriptor, only one is kept.  All discarded * descriptors are noted. */int ReadVDS(UINT8 *buf, char *name, UINT32 loc, UINT32 len){  /*   * All volume descriptors are one block in length.  This routine    * scans the Volume Descriptor Sequence, picking out the interesting   * stuff.  The interesting stuff includes one PVD, one LVD, the UDF   * IUVD, one USD, and one PD.  The buffer must be able to handle five   * sectors.  Upon return, the buffer will contain the listed descriptors   * in the order above.   */  UINT32                    i, j;  UINT8*                    buffer;  struct tag               *vdtag;  UINT8                     zerotest;  struct PrimaryVolDes     *PVD, *PVDt;  struct LogVolDesc        *LVD, *LVDt;  struct ImpUseDesc        *IUVD, *IUVDt;  struct UnallocSpDesHead  *USD, *USDt;  struct PartDesc          *PD, *PDt;  printf("\n--Reading the %s Volume Descriptor Sequence.\n", name);  ClearError();  buffer = malloc(secsize);  if (buffer) {    memset(buf, 0, secsize * 5);    /*     * The following pointers are for convenience sake.     */    PVD  = (struct PrimaryVolDes *)(buf);    LVD  = (struct LogVolDesc *)(buf + secsize);    IUVD = (struct ImpUseDesc *)(buf + 2 * secsize);    USD  = (struct UnallocSpDesHead *)(buf + 3 * secsize);    PD   = (struct PartDesc *)(buf + 4 * secsize);    vdtag = (struct tag *)buffer;    PVDt  = (struct PrimaryVolDes *)buffer;    LVDt  = (struct LogVolDesc *)buffer;    IUVDt = (struct ImpUseDesc *)buffer;    USDt  = (struct UnallocSpDesHead *)buffer;    PDt   = (struct PartDesc *)buffer;        for (i = 0; i < (len >> sdivshift); i++) {      /*       * Get a sector and test it.       */      ClearError();      ReadSectors(buffer, loc + i, 1);      CheckTag(vdtag, loc + i, -1, 0, 496);      zerotest = 0;      for (j = 0; j < secsize; j++) {        zerotest |= buffer[j];      }      if (!zerotest) {        ClearError();      }      if (!Error.Code) {        printf("  %s VDS (%08x): ", name, loc + i);        switch (U_endian16(vdtag->uTagID)) {          case 0:                    printf("terminated by blank or zeroed sector.\n");                    i = len;                    break;          case TAGID_PVD:                    if (U_endian16(PVD->sTag.uTagID)) {                      /*                       * A PVD already exists.  Replace if OK                       */                      if (memcmp(PVD->aVolID, PVDt->aVolID, 32) ||                          memcmp(PVD->aVolSetID, PVDt->aVolSetID, 128) ||                          memcmp(&PVD->sDesCharSet, &PVDt->sDesCharSet, sizeof(struct charspec))) {                        printf("\n**A PVD that doesn't match the previous one was found.\n");                      } else {                        if (U_endian32(PVDt->uVolDescSeqNum) > PVD->uVolDescSeqNum) {                          printf("Replaced PVD seq. %d with %d.\n",				 U_endian32(PVD->uVolDescSeqNum),                                 U_endian32(PVDt->uVolDescSeqNum));                          memcpy(PVD, PVDt, secsize);                        } else {                          printf("Not replacing PVD seq. %d with %d.\n", PVD->uVolDescSeqNum,                                 PVDt->uVolDescSeqNum);                        }                      }                    } else {                      memcpy(PVD, PVDt, secsize);                      printf("Found first PVD.\n");                    }                    break;          case TAGID_POINTER:                    loc = U_endian32(((struct VolDescPtr *)buffer)->sNextVDS.Location);                    len = U_endian32(((struct VolDescPtr *)buffer)->sNextVDS.Length);                    track_volspace(loc, len >> sdivshift, "Next VDS sequence");                    i = -1;                    printf("Redirecting to 0x%08x (%x bytes).\n", loc, len);                    break;          case TAGID_IUD:                    if (CheckRegid(&IUVDt->sImplementationIdentifier, E_REGID_IUVD)) {                      printf("A non-UDF IUVD was found.  Skipping.\n");                    } else {                      if (U_endian16(IUVD->sTag.uTagID)) {                        /*                         * A IUVD already exists.  Replace if OK                         */                        if (U_endian32(IUVDt->uVolDescSeqNum) > U_endian32(IUVD->uVolDescSeqNum)) {                          printf("Replaced IUVD seq. %d with %d.\n", U_endian32(IUVD->uVolDescSeqNum),                                 U_endian32(IUVDt->uVolDescSeqNum));                          memcpy(IUVD, IUVDt, secsize);                        } else {                          printf("Not replacing IUVD seq. %d with %d.\n",				 U_endian32(IUVD->uVolDescSeqNum),                                 U_endian32(IUVDt->uVolDescSeqNum));                        }                      } else {                        printf("Found first IUVD.\n");                        memcpy(IUVD, IUVDt, secsize);                      }                    }                    break;                              case TAGID_PD:                    if (U_endian16(PD->sTag.uTagID)) {                      /*                       * A PD already exists.  Replace if OK                       */                      if (U_endian16(PD->uPartNumber) != U_endian16(PDt->uPartNumber)) {                        printf("\n**A PD that doesn't match the previous one was found.\n"                               "Only one partition allowed per volume.\n");                      } else {                        if (U_endian32(PDt->uVolDescSeqNum) > U_endian32(PD->uVolDescSeqNum)) {                          printf("Replaced PD seq. %d with %d.\n", 				 U_endian32(PD->uVolDescSeqNum),                                 U_endian32(PDt->uVolDescSeqNum));                          memcpy(PD, PDt, secsize);                        } else {                          printf("Not replacing PD seq. %d with %d.\n",				 U_endian32(PD->uVolDescSeqNum),                                 U_endian32(PDt->uVolDescSeqNum));                        }                      }                    } else {                      memcpy(PD, PDt, secsize);                      printf("Found first PD.\n");                    }                    break;          case TAGID_LVD:                    if (U_endian16(LVD->sTag.uTagID)) {                      /*                       * A LVD already exists.  Replace if OK                       */                      if (memcmp(LVD->uLogVolID, LVDt->uLogVolID, 128) ||                          memcmp(&LVD->sDesCharSet, &LVDt->sDesCharSet, sizeof(struct charspec))) {                        printf("\n**A LVD that doesn't match the previous one was found.\n");                      } else {                        if (U_endian32(LVDt->uVolDescSeqNum) > U_endian32(LVD->uVolDescSeqNum)) {                          printf("Replaced LVD seq. %d with %d.\n",				 U_endian32(LVD->uVolDescSeqNum),                                 U_endian32(LVDt->uVolDescSeqNum));                          memcpy(LVD, LVDt, secsize);                        } else {                          printf("Not replacing LVD seq. %d with %d.\n",				 U_endian32(LVD->uVolDescSeqNum),                                 U_endian32(LVDt->uVolDescSeqNum));                        }                      }                    } else {                      memcpy(LVD, LVDt, secsize);                      printf("Found first LVD.\n");                    }                    break;          case TAGID_USD:                    if (U_endian16(USD->sTag.uTagID)) {                      /*                       * A USD already exists.  Replace if OK                       */                      if (U_endian32(PVDt->uVolDescSeqNum) > U_endian32(PVD->uVolDescSeqNum)) {                        printf("Replaced PVD seq. %d with %d.\n", 			       U_endian32(PVD->uVolDescSeqNum),                               U_endian32(PVDt->uVolDescSeqNum));                        memcpy(PVD, PVDt, secsize);                      } else {                        printf("Not replacing PVD seq. %d with %d.\n",			       U_endian32(PVD->uVolDescSeqNum),			       U_endian32(PVDt->uVolDescSeqNum));                      }                    } else {                      memcpy(USD, USDt, secsize);                      printf("Found first USD.\n");                    }                    break;          case TAGID_TERM_DESC:                    printf("terminated by a Terminating Descriptor.\n");                    i = len;                    break;          default:                    printf("\n**Unknown Tag (%d) found in VDS!\n",                            U_endian16(vdtag->uTagID));        }      } else {        DumpError();      }    }  //run through extent    } else {    Error.Code = ERR_NO_VD_MEM;  }  return Error.Code;}   int VerifyVDS(){  int i;  struct PrimaryVolDes    *mainPVD,  *reservePVD;  struct ImpUseDesc       *mainIUVD, *reserveIUVD;  struct UnallocSpDesHead *mainUSD,  *reserveUSD;  struct LogVolDesc       *mainLVD,  *reserveLVD;  struct PartDesc         *mainPD,   *reservePD;  UINT8 *buffer_main, *buffer_reserve;    printf("\n--Verifying Volume Descriptor Sequences.\n");  buffer_main = malloc(secsize * 5);  buffer_reserve = malloc(secsize * 5);  if (buffer_main && buffer_reserve) {    ReadVDS(buffer_main, "Main", VDS_Loc, VDS_Len);    DumpError();    ReadVDS(buffer_reserve, "Reserve", RVDS_Loc, RVDS_Len);    DumpError();    /*      * The important Volume Descriptors are in memory.  Let's run!     * The following definitions are for easy access to each VD.     */    mainPVD  = (struct PrimaryVolDes *)(buffer_main);    mainLVD  = (struct LogVolDesc *)(buffer_main + secsize);    mainIUVD = (struct ImpUseDesc *)(buffer_main + 2 * secsize);    mainUSD  = (struct UnallocSpDesHead *)(buffer_main + 3 * secsize);    mainPD   = (struct PartDesc *)(buffer_main + 4 * secsize);    reservePVD  = (struct PrimaryVolDes *)(buffer_reserve);    reserveLVD  = (struct LogVolDesc *)(buffer_reserve + secsize);    reserveIUVD = (struct ImpUseDesc *)(buffer_reserve + 2 * secsize);    reserveUSD  = (struct UnallocSpDesHead *)(buffer_reserve + 3 * secsize);    reservePD   = (struct PartDesc *)(buffer_reserve + 4 * secsize);    if (!Fatal) {      printf("\n--Primary Volume Descriptor Information:\n");      checkPVD(mainPVD, reservePVD);    }      /* Verify the existence of the USD.  Print its contents. */    if (!Fatal) {      printf("\n--Unallocated Volume Space Descriptor Information:\n");      checkUSD(mainUSD, reserveUSD);    }    /* Verify the existence of the LVD.  Print its contents and extract useful     information. */    if (!Fatal) {      printf("\n--Logical Volume Descriptor Information:\n");      checkLVD(mainLVD, reserveLVD);    }    /* Verify the existence of the PD(s).  Print contents and extract useful       information. */    if (!Fatal) {      printf("\n--Partition Descriptor Information:\n");      checkPD(mainPD, reservePD);    }    GetVAT();    if (Error.Code) {      DumpError();    }    GetMap();    if (Error.Code) {      DumpError();    }    ReadSpaceMap();    if (Error.Code) {      DumpError();    }    /* Verify the existence of the IUVD.  Print its contents. */    if (!Fatal) {      printf("\n--Implementation Use Volume Descriptor information:\n");      checkIUVD(mainIUVD, reserveIUVD);    }        if (!Fatal) {      printf("\n--Volume space report:\n");      for (i = 0; i < VolSpaceListLen; i++) {        printf("  %8d : %8d - %s\n", VolSpace[i].Location,                VolSpace[i].Location + VolSpace[i].Length - 1, VolSpace[i].Name);      }    }     free(buffer_main);    free(buffer_reserve);  }  return Error.Code;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av成人免费在线观看| 《视频一区视频二区| 欧美一级欧美一级在线播放| 久久久亚洲精品石原莉奈| 亚洲激情在线激情| 韩国理伦片一区二区三区在线播放| 91视频国产资源| 亚洲国产美女搞黄色| 国产精品自拍网站| 欧美精品亚洲二区| 亚洲免费在线观看视频| 国产一区美女在线| 欧美一级午夜免费电影| 亚洲国产美女搞黄色| 欧美一级夜夜爽| 欧美性猛片xxxx免费看久爱| 97se亚洲国产综合自在线观| 日韩午夜中文字幕| 亚洲韩国一区二区三区| 99re成人精品视频| 国产欧美精品一区二区色综合| 日韩不卡在线观看日韩不卡视频| 91麻豆视频网站| 亚洲欧洲日韩综合一区二区| 国产盗摄女厕一区二区三区| 日韩欧美一二区| 青青草国产精品亚洲专区无| 欧美日韩一区二区三区四区五区| 一区二区在线观看免费| 91在线精品秘密一区二区| 国产精品私人自拍| 处破女av一区二区| 国产精品久久久久久久久免费相片| 国产黄色91视频| 久久久精品综合| 免费欧美日韩国产三级电影| 成人99免费视频| 色哟哟一区二区在线观看| 日韩av电影免费观看高清完整版 | 成人免费精品视频| 久久久久国产精品免费免费搜索| 国内精品视频666| www欧美成人18+| 黑人精品欧美一区二区蜜桃| 欧美精品一区二区三区四区| 国产乱子轮精品视频| 国产日韩欧美一区二区三区乱码 | 91女人视频在线观看| 国产精品欧美一区二区三区| 成人精品在线视频观看| 亚洲天堂福利av| 欧美亚洲动漫另类| 日韩精品电影一区亚洲| 26uuu另类欧美| 国产成人小视频| 亚洲色图清纯唯美| 欧美日韩亚洲另类| 精品一区二区影视| 国产精品美女久久久久久久久久久| 91亚洲国产成人精品一区二区三| 18欧美亚洲精品| 久久综合av免费| 日韩欧美国产午夜精品| 天天综合天天综合色| 日韩一区二区三区四区| 韩国中文字幕2020精品| 国产精品久久午夜夜伦鲁鲁| 色哟哟一区二区三区| 免费不卡在线观看| 国产精品乱人伦一区二区| 欧美人与禽zozo性伦| 国产成人av电影在线| 亚洲午夜国产一区99re久久| 精品免费视频.| 色av成人天堂桃色av| 免费精品视频最新在线| 亚洲日穴在线视频| 日韩一区二区麻豆国产| 色综合一区二区三区| 精品在线一区二区三区| 亚洲一区二区三区小说| wwwwxxxxx欧美| 五月天婷婷综合| 国产综合久久久久久久久久久久| 亚洲欧美日韩在线播放| 久久99九九99精品| 亚洲视频在线一区观看| 91精品国产综合久久久蜜臀粉嫩| 成人免费视频视频在线观看免费| 午夜精品久久久久久久久久久| 日本一区二区三区在线不卡| 欧美一区二区三区四区视频| 91女厕偷拍女厕偷拍高清| 激情六月婷婷综合| 爽爽淫人综合网网站| 亚洲天堂网中文字| 国产精品色哟哟| 久久综合色一综合色88| 日韩一区二区三区精品视频| 日本韩国欧美一区二区三区| 国产成人在线免费观看| 久久精品国产网站| 日本美女一区二区三区| 国产精品久久久一本精品| 偷拍与自拍一区| 欧美二区三区91| 欧美亚洲国产bt| 91免费版pro下载短视频| 国产成人免费在线观看| 精品一区二区在线视频| 麻豆成人免费电影| 日本vs亚洲vs韩国一区三区二区| 亚洲摸摸操操av| 亚洲精品写真福利| 亚洲欧美日韩成人高清在线一区| 奇米影视7777精品一区二区| 亚洲一卡二卡三卡四卡无卡久久| 国产精品国模大尺度视频| 亚洲国产精品精华液2区45| 国产亚洲自拍一区| 久久欧美中文字幕| 国产三级欧美三级| 国产欧美视频一区二区三区| 亚洲国产精品av| 日本一区二区三区国色天香| 国产精品毛片无遮挡高清| 国产精品国产三级国产普通话三级| 国产精品久久久久久久久久久免费看 | 久久精品一区蜜桃臀影院| 制服丝袜成人动漫| 日韩一级片网址| 精品精品国产高清a毛片牛牛| 久久久精品2019中文字幕之3| 国产目拍亚洲精品99久久精品| 国产精品乱人伦中文| 一区二区三区欧美亚洲| 丝袜美腿亚洲一区| 另类成人小视频在线| 国产高清久久久久| 91福利小视频| 欧美一区二区三区播放老司机| 久久久精品免费免费| 专区另类欧美日韩| 三级在线观看一区二区| 国产精一品亚洲二区在线视频| 91色porny在线视频| 欧美三区在线视频| 久久久.com| 伊人夜夜躁av伊人久久| 麻豆精品视频在线观看视频| www.综合网.com| 欧美日韩国产电影| 国产亚洲欧美日韩日本| 亚洲成a人v欧美综合天堂| 国产另类ts人妖一区二区| 色婷婷亚洲综合| 精品久久久久一区二区国产| 亚洲蜜臀av乱码久久精品蜜桃| 丝瓜av网站精品一区二区| 国产.欧美.日韩| 欧美喷水一区二区| 国产精品国产三级国产aⅴ入口 | 全部av―极品视觉盛宴亚洲| 国产精品自拍在线| 欧美日韩三级视频| 国产精品第一页第二页第三页| 爽好多水快深点欧美视频| 不卡在线观看av| 欧美一区二区高清| 亚洲欧美精品午睡沙发| 国产在线播放一区三区四| 色天使色偷偷av一区二区| 久久久精品中文字幕麻豆发布| 性做久久久久久免费观看欧美| 丁香激情综合国产| 日韩精品在线网站| 五月婷婷综合网| 色噜噜夜夜夜综合网| 国产欧美一区二区精品久导航 | 欧美成人video| 亚洲成国产人片在线观看| 成人av网站免费| 久久久久国产一区二区三区四区| 图片区小说区区亚洲影院| 99久久精品免费| 国产亚洲精品aa| 精品一区二区久久久| 在线电影院国产精品| 亚洲在线一区二区三区| 99国产精品99久久久久久| 久久精品一级爱片| 六月丁香婷婷色狠狠久久| 欧美日韩黄色一区二区| 伊人夜夜躁av伊人久久| 97精品国产露脸对白| 国产区在线观看成人精品 | 亚洲午夜久久久久久久久久久| youjizz久久| 国产精品动漫网站| a4yy欧美一区二区三区|