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

📄 twain32_main.c

📁 这是一个开放源代码的与WINNT/WIN2K/WIN2003兼容的操作系统
💻 C
📖 第 1 页 / 共 2 页
字号:
            else
                twRC = TWRC_FAILURE;
            break;

        case DAT_USERINTERFACE:
            switch (MSG)
            {
                case MSG_DISABLEDS:
                    twRC = TWAIN_DisableDSUserInterface
                               (pOrigin, pDest, pData);
                    break;
                case MSG_ENABLEDS:
                    twRC = TWAIN_EnableDSUserInterface
                               (pOrigin, pDest, pData);
                    break;
                case MSG_ENABLEDSUIONLY:
                    twRC = TWAIN_EnableDSUIOnly (pOrigin, pDest, pData);
                    break;
                default:
                    twRC = TWRC_FAILURE;
                    break;
            }
            break;

        case DAT_XFERGROUP:
            switch (MSG)
            {
                case MSG_GET:
                    twRC = TWAIN_XferGroupGet (pOrigin, pDest, pData);
                    break;
                case MSG_SET:
                    twRC = TWAIN_XferGroupSet (pOrigin, pDest, pData);
                    break;
                default:
                    twRC = TWRC_FAILURE;
                    break;
            }
            break;

        default:
            twRC = TWRC_FAILURE;
            break;
    }

    return twRC;
}

TW_UINT16 TWAIN_ControlGroupHandler (
           pTW_IDENTITY pOrigin,
           pTW_IDENTITY pDest,
           TW_UINT16    DAT,
           TW_UINT16    MSG,
           TW_MEMREF    pData)
{
    TW_UINT16 twRC = TWRC_SUCCESS;

    if (pDest)
    {
        /* This operation's destination is a source */
        twRC = TWAIN_SourceControlHandler (pOrigin, pDest, DAT, MSG, pData);
    }
    else
    {
        /* This operation's destination is the Source Manager */
        twRC = TWAIN_SourceManagerHandler (pOrigin, DAT, MSG, pData);
    }

    return twRC;
}

TW_UINT16 TWAIN_ImageGroupHandler (
           pTW_IDENTITY pOrigin,
           pTW_IDENTITY pDest,
           TW_UINT16    DAT,
           TW_UINT16    MSG,
           TW_MEMREF    pData)
{
    TW_UINT16 twRC = TWRC_SUCCESS;

    if (pDest == NULL)
    {
        DSM_twCC = TWCC_BADDEST;
        return TWRC_FAILURE;
    }

    switch (DAT)
    {
        case DAT_CIECOLOR:
            if (MSG == MSG_GET)
                twRC = TWAIN_CIEColorGet (pOrigin, pDest, pData);
            else
                twRC = TWRC_FAILURE;
            break;

        case DAT_EXTIMAGEINFO:
            if (MSG == MSG_GET)
                twRC = TWAIN_ExtImageInfoGet (pOrigin, pDest, pData);
            else
                twRC = TWRC_FAILURE;
            break;

        case DAT_GRAYRESPONSE:
            switch (MSG)
            {
                case MSG_RESET:
                    twRC = TWAIN_GrayResponseReset (pOrigin, pDest, pData);
                    break;
                case MSG_SET:
                    twRC = TWAIN_GrayResponseSet (pOrigin, pDest, pData);
                    break;
                default:
                    twRC = TWRC_FAILURE;
                    DSM_twCC = TWCC_BADPROTOCOL;
                    WARN("unrecognized operation triplet\n");
                    break;
            }
            break;
        case DAT_IMAGEFILEXFER:
            if (MSG == MSG_GET)
                twRC = TWAIN_ImageFileXferGet (pOrigin, pDest, pData);
            else
                twRC = TWRC_FAILURE;
            break;

        case DAT_IMAGEINFO:
            if (MSG == MSG_GET)
                twRC = TWAIN_ImageInfoGet (pOrigin, pDest, pData);
            else
                twRC = TWRC_FAILURE;
            break;

        case DAT_IMAGELAYOUT:
            switch (MSG)
            {
                case MSG_GET:
                    twRC = TWAIN_ImageLayoutGet (pOrigin, pDest, pData);
                    break;
                case MSG_GETDEFAULT:
                    twRC = TWAIN_ImageLayoutGetDefault (pOrigin, pDest, pData);
                    break;
                case MSG_RESET:
                    twRC = TWAIN_ImageLayoutReset (pOrigin, pDest, pData);
                    break;
                case MSG_SET:
                    twRC = TWAIN_ImageLayoutSet (pOrigin, pDest, pData);
                    break;
                default:
                    twRC = TWRC_FAILURE;
                    DSM_twCC = TWCC_BADPROTOCOL;
                    WARN("unrecognized operation triplet\n");
                    break;
            }
            break;

        case DAT_IMAGEMEMXFER:
            if (MSG == MSG_GET)
                twRC = TWAIN_ImageMemXferGet (pOrigin, pDest, pData);
            else
                twRC = TWRC_FAILURE;
            break;

        case DAT_IMAGENATIVEXFER:
            if (MSG == MSG_GET)
                twRC = TWAIN_ImageNativeXferGet (pOrigin, pDest, pData);
            else
                twRC = TWRC_FAILURE;
            break;

        case DAT_JPEGCOMPRESSION:
            switch (MSG)
            {
                case MSG_GET:
                    twRC = TWAIN_JPEGCompressionGet (pOrigin, pDest, pData);
                    break;
                case MSG_GETDEFAULT:
                    twRC = TWAIN_JPEGCompressionGetDefault
                               (pOrigin, pDest, pData);
                    break;
                case MSG_RESET:
                    twRC = TWAIN_JPEGCompressionReset (pOrigin, pDest, pData);
                    break;
                case MSG_SET:
                    twRC = TWAIN_JPEGCompressionSet (pOrigin, pDest, pData);
                    break;
                default:
                    twRC = TWRC_FAILURE;
                    DSM_twCC = TWCC_BADPROTOCOL;
                    WARN("unrecognized operation triplet\n");
                    break;
            }
            break;

        case DAT_PALETTE8:
            switch (MSG)
            {
                case MSG_GET:
                    twRC = TWAIN_Palette8Get (pOrigin, pDest, pData);
                    break;
                case MSG_GETDEFAULT:
                    twRC = TWAIN_Palette8GetDefault (pOrigin, pDest, pData);
                    break;
                case MSG_RESET:
                    twRC = TWAIN_Palette8Reset (pOrigin, pDest, pData);
                    break;
                case MSG_SET:
                    twRC = TWAIN_Palette8Set (pOrigin, pDest, pData);
                    break;
                default:
                    twRC = TWRC_FAILURE;
                    DSM_twCC = TWCC_BADPROTOCOL;
                    WARN("unrecognized operation triplet\n");
            }
            break;

        case DAT_RGBRESPONSE:
            switch (MSG)
            {
                case MSG_RESET:
                    twRC = TWAIN_RGBResponseReset (pOrigin, pDest, pData);
                    break;
                case MSG_SET:
                    twRC = TWAIN_RGBResponseSet (pOrigin, pDest, pData);
                    break;
                default:
                    twRC = TWRC_FAILURE;
                    DSM_twCC = TWCC_BADPROTOCOL;
                    WARN("unrecognized operation triplet\n");
                    break;
            }
            break;

        default:
            twRC = TWRC_FAILURE;
            DSM_twCC = TWCC_BADPROTOCOL;
            WARN("unrecognized operation triplet\n");
    }
    return twRC;
}

TW_UINT16 TWAIN_AudioGroupHandler (
           pTW_IDENTITY pOrigin,
           pTW_IDENTITY pDest,
           TW_UINT16    DAT,
           TW_UINT16    MSG,
           TW_MEMREF    pData)
{
    TW_UINT16 twRC = TWRC_FAILURE;

    switch (DAT)
    {
        case DAT_AUDIOFILEXFER:
            if (MSG == MSG_GET)
                twRC = TWAIN_AudioFileXferGet (pOrigin, pDest, pData);
            break;

        case DAT_AUDIOINFO:
            if (MSG == MSG_GET)
                twRC = TWAIN_AudioInfoGet (pOrigin, pDest, pData);
            break;

        case DAT_AUDIONATIVEXFER:
            if (MSG == MSG_GET)
                twRC = TWAIN_AudioNativeXferGet (pOrigin, pDest, pData);
            break;

        default:
            DSM_twCC = TWCC_BADPROTOCOL;
            twRC = TWRC_FAILURE;
            break;
    }

    return twRC;
}

/* Main entry point for the TWAIN library */
TW_UINT16 WINAPI
DSM_Entry (pTW_IDENTITY pOrigin,
           pTW_IDENTITY pDest,
           TW_UINT32    DG,
           TW_UINT16    DAT,
           TW_UINT16    MSG,
           TW_MEMREF    pData)
{
    TW_UINT16 twRC = TWRC_SUCCESS;  /* Return Code */

    TRACE("(DG=%ld DAT=%d MSG=%d)\n", DG, DAT, MSG);

    switch (DG)
    {
        case DG_CONTROL:
            twRC = TWAIN_ControlGroupHandler (pOrigin,pDest,DAT,MSG,pData);
            break;
        case DG_IMAGE:
            twRC = TWAIN_ImageGroupHandler (pOrigin,pDest,DAT,MSG,pData);
            break;
        case DG_AUDIO:
            twRC = TWAIN_AudioGroupHandler (pOrigin,pDest,DAT,MSG,pData);
            break;
        default:
            DSM_twCC = TWCC_BADPROTOCOL;
            twRC = TWRC_FAILURE;
    }

    return twRC;
}

/* A helper function that looks up a destination identity in the active
   source list */
activeDS *TWAIN_LookupSource (pTW_IDENTITY pDest)
{
    activeDS *pSource;

    for (pSource = activeSources; pSource; pSource = pSource->next)
        if (pSource->identity.Id == pDest->Id)
            break;

    return pSource;
}

⌨️ 快捷键说明

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