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

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

?? dvdioctl.cpp

?? 三星2410,WinCE5.0下的硬盤IDE驅動.
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
        ), x.RPCVer));
#else
#define DUMP_REPORT_KEY(x)
#endif

DWORD
CPCIDiskAndCD::DVDGetRegion(
    PIOREQ pIOReq
    )
{
    DWORD                dwError = ERROR_SUCCESS;
    DWORD                dwLength;
    SGX_BUF              SgBuf;
    DWORD                dwRet;
    RKFMT_RPC            rpcData;
    PDVD_REGIONCE        preg;
    ATAPI_COMMAND_PACKET CmdPkt;

    memset(&CmdPkt, 0, sizeof(ATAPI_COMMAND_PACKET));

    // map address and check for security violation
    preg = (PDVD_REGIONCE)MapCallerPtr((LPVOID)pIOReq->pOutBuf, sizeof(BYTE));
    if (pIOReq->pOutBuf != NULL && preg == NULL) {
        // security violation
        DEBUGMSG(ZONE_ERROR, (TEXT(
            "Atapi!CPCIDiskAndCD::DVDGetRegion> Failed to map pointer to caller\r\n"
            )));
        return ERROR_INVALID_PARAMETER;
    }

    // read disc copy system and region
    DVDGetCopySystem(&(preg->CopySystem), &(preg->RegionData));

    memset(&CmdPkt, 0, sizeof(ATAPI_COMMAND_PACKET));

    // create command packet to read RPC setting (report key)
    dwLength = DVDSetupReadTitleKey(&CmdPkt, DvdGetRPC, 0, 0);
    SgBuf.sb_len = sizeof(RKFMT_RPC);
    SgBuf.sb_buf = (PBYTE) &rpcData;

    // send command
    if (AtapiSendCommand(&CmdPkt)) {
        // fetch result
        if (AtapiReceiveData(&SgBuf, 1, &dwRet)) {
            DUMP_REPORT_KEY(rpcData);
            // is the drive in a non-NONE RPC state?
            if (rpcData.ResetCounts & 0xc0) {
                // the drive is in SET, LAST CHANCE or PERM, i.e., this drive
                // has had its region set already
                preg->SystemRegion = rpcData.SystemRegion ^ 0xFF;
                preg->ResetCount = rpcData.ResetCounts & 0x07;
            }
            else {
                // the drive is in NONE, i.e., this drive is a virgin
                DEBUGMSG(ZONE_ERROR|ZONE_CDROM, (_T(
                    "Atapi!CPCIDiskAndCD::DVDGetRegion> Region has never been set\r\n"
                    )));
                preg->SystemRegion = 0xFF;
                preg->ResetCount = 5;
            }
        }
        else {
            DEBUGMSG(ZONE_ERROR|ZONE_CDROM, (TEXT(
                "Atapi!CPCIDiskAndCD::DVDGetRegion> Failed to receive REPORT KEY response\r\n"
                )));
            dwError = ERROR_READ_FAULT;
        }
    }
    else {
        DEBUGMSG(ZONE_ERROR|ZONE_CDROM, (TEXT(
            "Atapi!CPCIDiskAndCD::DVDGetRegion> Failed to send REPORT KEY command\r\n"
            )));
        dwError = ERROR_READ_FAULT;
    }

    return dwError;
}

DWORD
DVDSetupSendKey(
    ATAPI_COMMAND_PACKET  *pCmd,
    PDVD_COPY_PROTECT_KEY  pKey,
    RKFMT_CHLGKEY         *keyBuf
    )
{
    BYTE   KeyType;
    BYTE   agid;
    DWORD  dwRet;
    DWORD  dwTmp;
    PRKCDB pcdb = (PRKCDB)pCmd;
    PVOID  pdata = &(pKey->KeyData[0]);

    KeyType = (BYTE)pKey->KeyType;
    agid = (BYTE)pKey->SessionId;

    pcdb->OpCode = DVDOP_SEND_KEY;
    pcdb->Lun = 0;
    pcdb->KeyFmt = (agid << 6) | KeyType;

    if (
        !KeyType || KeyType > DvdBusKey2 ||
        (pKey->KeyLength < ((dwRet = rkret[KeyType]) >> 24))
    ) {
        return 0;
    }

    keyBuf->Len = (WORD)((dwRet >> 16) - (2 << 8));
    keyBuf->Reserved[0] = keyBuf->Reserved[1] = 0;

    if (KeyType == DvdBusKey2) {
        for (dwTmp = 0; dwTmp < 5; dwTmp++) {
            *((PBYTE)(&keyBuf->chlgkey) + dwTmp) = *((PBYTE)pdata + dwTmp);
        }

        for (;dwTmp < 8; dwTmp++) {
            *((PBYTE)(&keyBuf->chlgkey) + dwTmp) = 0;
        }
    }
    else {
        for (dwTmp = 0; dwTmp < ((dwRet >> 26) - 1); dwTmp++ ) {
            *((PDWORD)(&keyBuf->chlgkey) + dwTmp) = *((PDWORD)pdata + dwTmp);
        }
    }

    *(PDWORD)(&pcdb->Reserved) = dwRet;

    pcdb->LBA = 0;
    pcdb->NACA = 0;

    return (EndSwap(dwRet));
}

DWORD
CPCIDiskAndCD::DVDSendKey(
    PIOREQ pIOReq
    )
{
    DWORD                 dwError = ERROR_SUCCESS;
    ATAPI_COMMAND_PACKET  CmdPkt;
    PDVD_COPY_PROTECT_KEY pKey = (PDVD_COPY_PROTECT_KEY)pIOReq->pInBuf;
    DWORD                 dwLength;
    RKFMT_CHLGKEY         keyBuf;
    SGX_BUF               SgBuf;
    DWORD                 dwRet;

    memset(&CmdPkt, 0, sizeof(ATAPI_COMMAND_PACKET));

    if (IOCTL_DVD_END_SESSION == pIOReq->dwCode) {
        BYTE bAgid;
        pKey->KeyType = DvdAGID;
        bAgid= (BYTE)pKey->SessionId;
        if (bAgid == -1) {
            bAgid = 0;
        }
        dwLength = DVDSetupReadTitleKey(&CmdPkt, -1, bAgid, 0);
    }
    else {
        dwLength = DVDSetupSendKey(&CmdPkt, pKey, &keyBuf);
    }

    SgBuf.sb_len = dwLength;
    SgBuf.sb_buf = (PBYTE) &keyBuf;

    if (AtapiSendCommand(&CmdPkt)) {
        if (!AtapiSendData(&SgBuf, 1, &dwRet)) {
            DEBUGMSG(ZONE_ERROR|ZONE_CDROM, (TEXT(
                "Atapi!CPCIDiskAndCD::DVDSendKey> Failed to execute command %d\r\n"
                ), CmdPkt.Opcode));
            dwError = ERROR_WRITE_FAULT;
        }
    }
    else {
      dwError = ERROR_GEN_FAILURE;
    }

    return dwError;
}

DWORD
CPCIDiskAndCD::DVDSetRegion(
    PIOREQ pIOReq
    )
{
    return ERROR_NOT_SUPPORTED;
}

/*
    CPCIDiskAndCD::DVDGetRegion

        Return a bitfield which describes the regions in which the mounted
        disc can be played.

    Return

        Success.

    Notes

        READ DVD STRUCTURE Data Format with Format field DVDSTRUCT_FMT_COPY
        returns the Region Management Information, which describes the regions
        in which the disc can be played.  Each bit represents one of eight
        regions.  If a bit is cleared in this field, the disc can be played in
        the corresponding region.  If a bit is set in this field, the disc can
        not be played in the corresponding region.

        We perform an XOR with this field.

        For more information on the READ DVD STRUCTURE command, see SFF8090i v5
        R0.10, 13.25.

        The READ DVD STRUCTURE with Format field = 0x01 return data is of the
        following form:

        Byte 0 DVD STRUCTURE Data Length (MSB)
        Byte 1 DVD STRUCTURE Data Length (LSB)
        Byte 2 Reserved
        Byte 3 Reserved
        Byte 4 Copyright Protection System Type
        Byte 5 Region Management Information
        Byte 6 Reserved
        Byte 7 Reserved
*/
BOOL
CPCIDiskAndCD::DVDGetCopySystem(
    LPBYTE pbCopySystem,
    LPBYTE pbRegionManagement
    )
{
    BOOL                 fSuccess = FALSE;
    ATAPI_COMMAND_PACKET CmdPkt;
    PRDVDCDB             pCmd = (PRDVDCDB)&CmdPkt;
    RDVDFMT_Copy         fmtCopy;
    SGX_BUF              SgBuf;
    DWORD                dwRet;

    DEBUGCHK(NULL != pbCopySystem);
    DEBUGCHK(NULL != pbRegionManagement);

    *pbCopySystem = 0;
    *pbRegionManagement = 0;

    memset(&CmdPkt, 0, sizeof(ATAPI_COMMAND_PACKET));
    memset(&fmtCopy, 0, sizeof(RDVDFMT_Copy));

    pCmd->OpCode = DVDOP_READ_DVD_STRUC;
    pCmd->Format = DVDSTRUC_FMT_COPY;
    pCmd->Len = sizeof (RDVDFMT_Copy) << 8; // endian swap length
    // pCmd->Len = keyLength << 8;
    SgBuf.sb_len = sizeof(RDVDFMT_Copy);
    SgBuf.sb_buf = (PBYTE) &fmtCopy;

    m_dwDeviceFlags &= ~DFLAGS_MEDIA_ISDVD;

    // attempt to detect if media is present
    if (!AtapiIsUnitReady()) {
        DEBUGMSG(ZONE_ERROR|ZONE_CDROM, (_T(
            "Atapi!CPCIDiskAndCD::DVDGetCopySystem> DVD not present\r\n"
            )));
       goto exit;
    }

    // fmtCopy is a struct of two DWORDs; we need to return 4th and 5th bytes
    if (AtapiSendCommand(&CmdPkt)) {
        if (AtapiReceiveData(&SgBuf, 1, &dwRet)) {
            *pbCopySystem = (BYTE)(fmtCopy.Data & 0xFF);              // 4th byte
            *pbRegionManagement = (BYTE)((fmtCopy.Data >> 8) & 0xFF); // 5th byte
            *pbRegionManagement = *pbRegionManagement ^ 0xFF;         // supported regions are 1s
            fSuccess = TRUE;
        }
    }

exit:;

    return fSuccess;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人精品gif动图一区| 色噜噜狠狠色综合欧洲selulu| 一区二区高清免费观看影视大全| 中文乱码免费一区二区| 欧美国产一区二区| 国产精品福利影院| 亚洲免费av在线| 亚洲国产另类av| 免费人成黄页网站在线一区二区| 日韩在线观看一区二区| 老司机免费视频一区二区三区| 免费看黄色91| 国产精品77777竹菊影视小说| 国产精品99精品久久免费| 成人午夜在线免费| 99国产精品视频免费观看| 色婷婷综合激情| 欧美在线观看视频一区二区| 欧美精品久久99久久在免费线| 欧美一级高清片| 亚洲国产精品二十页| 亚洲精品视频在线观看网站| 亚洲国产精品综合小说图片区| 美女爽到高潮91| 成人精品国产一区二区4080| 色8久久精品久久久久久蜜| 91精品国产91久久久久久最新毛片| 精品粉嫩超白一线天av| 一区精品在线播放| 免费不卡在线视频| 91亚洲精品久久久蜜桃| 欧美性猛片aaaaaaa做受| 欧美v日韩v国产v| 日韩理论片在线| 蜜臀av一区二区在线免费观看| 成人午夜电影网站| 在线不卡一区二区| 国产精品对白交换视频 | 国产一区二区三区在线看麻豆| 国产高清精品久久久久| 91美女片黄在线观看| 久久亚洲影视婷婷| 五月天婷婷综合| 91免费版pro下载短视频| 久久婷婷国产综合国色天香| 亚洲一区二区三区四区在线免费观看| 韩国av一区二区| 欧美蜜桃一区二区三区| 中文字幕在线不卡国产视频| 免费成人小视频| 欧美性欧美巨大黑白大战| 国产精品久久久久久久久久久免费看| 日韩高清不卡一区二区三区| 欧美一级黄色录像| 国产精品卡一卡二| 国产一区二区三区蝌蚪| 666欧美在线视频| 一区二区三区国产豹纹内裤在线| 国产在线麻豆精品观看| 欧美一区二区三区免费在线看| 亚洲欧美在线另类| 盗摄精品av一区二区三区| 精品伦理精品一区| 蜜桃视频在线一区| 日韩一区二区三区视频在线观看| 亚洲图片欧美色图| 欧美亚洲丝袜传媒另类| 亚洲黄色av一区| 91碰在线视频| 亚洲欧洲制服丝袜| 在线观看网站黄不卡| 亚洲免费看黄网站| 色婷婷av久久久久久久| 亚洲精品少妇30p| 欧美中文字幕一区| 伊人婷婷欧美激情| 欧美日韩视频在线第一区 | 欧美久久一二三四区| 亚洲另类中文字| 91国偷自产一区二区使用方法| 国产精品久久久久一区二区三区| 高清成人免费视频| 亚洲人123区| 欧美日韩一级片在线观看| 亚洲永久免费视频| 欧美精品v国产精品v日韩精品| 丝袜亚洲另类丝袜在线| 日韩欧美国产一二三区| 国产一区二区免费在线| 中文一区在线播放| 色综合久久天天综合网| 性做久久久久久免费观看| 制服丝袜亚洲色图| 狠狠色综合播放一区二区| 中文子幕无线码一区tr| 91国偷自产一区二区使用方法| 日韩国产一二三区| 国产亚洲成aⅴ人片在线观看 | 欧美激情一区三区| 日韩欧美色电影| 国产日韩亚洲欧美综合| 久久99深爱久久99精品| 国产日本欧洲亚洲| 国产成a人亚洲精品| 精品日韩一区二区三区免费视频| 亚洲精品国产一区二区精华液 | 国产一区二区三区四区五区美女 | 亚洲欧美国产三级| 亚洲欧洲av另类| 中文字幕日韩av资源站| 成人欧美一区二区三区小说 | 久久影院午夜片一区| 日韩视频一区在线观看| 欧美一级艳片视频免费观看| 欧美精品vⅰdeose4hd| 欧美日韩国产美| 欧美日韩成人综合天天影院| 7777精品伊人久久久大香线蕉最新版| 欧美图片一区二区三区| 欧美日韩亚洲国产综合| 欧美丰满一区二区免费视频 | av不卡免费电影| 色综合一区二区| 91精品在线免费| 91麻豆精品国产91久久久使用方法| 欧美日韩成人激情| 欧美一级免费观看| 26uuu另类欧美| 国产精品毛片高清在线完整版| 国产精品久久精品日日| 一区二区三区产品免费精品久久75| 亚洲精品网站在线观看| 日韩国产成人精品| 国产精品中文欧美| 91视频免费播放| 欧美一区二区三区在| 国产性色一区二区| 一区二区成人在线| 久久超碰97人人做人人爱| 国产成人啪免费观看软件| av网站免费线看精品| 欧美日韩精品三区| 国产亚洲一区二区三区| 亚洲综合免费观看高清完整版在线| 日本麻豆一区二区三区视频| 国产成人亚洲精品狼色在线| 在线观看中文字幕不卡| 精品福利av导航| 一区二区三区产品免费精品久久75| 日本va欧美va瓶| 成人黄色国产精品网站大全在线免费观看| 91视频com| 精品福利一区二区三区 | 国产精品伦一区二区三级视频| 亚洲色图欧洲色图| 免费成人在线观看视频| 99精品热视频| 2023国产精品视频| 午夜成人免费电影| av在线播放一区二区三区| 欧美一区二区三区视频在线 | 日本道免费精品一区二区三区| 日韩欧美一级片| 一区二区三区不卡视频在线观看| 激情图区综合网| 欧美高清视频www夜色资源网| 国产人久久人人人人爽| 日本欧美一区二区在线观看| 一道本成人在线| 日本一区二区在线不卡| 裸体健美xxxx欧美裸体表演| 91国产丝袜在线播放| 欧美高清在线精品一区| 久久99国产精品久久| 3atv一区二区三区| 亚洲精品久久7777| 91网上在线视频| 国产精品国产三级国产普通话三级| 久久精品国产澳门| 欧美一区二区三区精品| 亚洲一级在线观看| 91国模大尺度私拍在线视频| 中文字幕一区二区三区在线不卡 | 欧美无砖专区一中文字| 亚洲乱码中文字幕综合| bt7086福利一区国产| 国产日韩欧美综合在线| 国产中文字幕精品| 久久综合久久99| 韩国精品在线观看| 久久久久久麻豆| 国产在线麻豆精品观看| 久久无码av三级| 日本高清免费不卡视频| 一区二区三区波多野结衣在线观看| 成人国产一区二区三区精品| 国产精品成人网| 色呦呦日韩精品| 怡红院av一区二区三区| 欧美视频三区在线播放|