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

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

?? com_vdd.c

?? DD sample implements serial port support for the Virtual DOS Machine (VDM). Driver for windows. Tool
?? C
字號:
/*
 * Com_VDD.c - Windows NT serial port Virtual Device Driver
 *
 * This module handles the init/exit of the VDD.
 *
 * copyright 1992 by Microsoft Corporation
 *
 * revision history:
 *  24-Dec-1992 John Morgan:  written
 *
 */

#include "com_vdd.h"
#include "pc_com.h"
#include "nt_com.h"

#include <vddsvc.h>

/*
 *
 * VDDInitialize
 *
 * Arguments:
 *     DllHandle - Identifies this VDD
 *     Reason - Attach or Detach
 *     Context - Not Used
 *
 * Return Value:
 *     TRUE: SUCCESS
 *     FALSE: FAILURE
 *
 */
BOOL VDDInitialize(
    IN PVOID DllHandle,
    IN ULONG Reason,
    IN PCONTEXT Context OPTIONAL
    )
{
    VDD_IO_PORTRANGE PortDefs[NUM_SERIAL_PORTS] = {
        {0x3F8, 0x3FF},
        {0x2F8, 0x2FF},
        {0x3E8, 0x3EF},
        {0x2E8, 0x2EF}
    };

    VDD_IO_HANDLERS PortHandlers[NUM_SERIAL_PORTS] = {
        {com_inb, NULL, NULL, NULL, com_outb, NULL, NULL, NULL},
        {com_inb, NULL, NULL, NULL, com_outb, NULL, NULL, NULL},
        {com_inb, NULL, NULL, NULL, com_outb, NULL, NULL, NULL},
        {com_inb, NULL, NULL, NULL, com_outb, NULL, NULL, NULL}
    };

    switch ( Reason ) {

    case DLL_PROCESS_ATTACH:
        host_com_init();

        // Attach inb & outb functions to correct ports
        VDDInstallIOHook(DllHandle, 4, PortDefs, PortHandlers);

        break;

    case DLL_PROCESS_DETACH:
        // Free comm ports
        VDDDeInstallIOHook(DllHandle, 4, PortDefs);

        host_com_exit();

        break;

    default:
        break;
    }

    return TRUE;
}


/*
 *
 * VDDTerminateVDM
 *
 */
VOID VDDTerminateVDM( VOID )
{
    return;
}


/*
 *
 * VDDInit
 *
 */
VOID VDDInit( VOID )
{

    // Called from the BOP manager. If VDDInitialize has done all the
    // checking and resources alloaction, just return success.

    setCF( 0 );

    return;
}


/*
 *
 * VDDDispatch
 *
 * Arguments:
 *     Client (DX)    = Address / command code
 *                       This is essentially an extended port number.  The
 *                       lowest hex digit identifies a function, while the
 *                       upper two digits identify the port base address.
 *                      Command 0 is send buffer. It writes CX
 *                       characters from the buffer at DS:SI.
 *                      Command 1 is read buffer. It reads up to
 *                       CX characters into the buffer at ES:DI. CX is
 *                       returned as the number of characters read.
 *                      Command 7 is set baud rate.  It sets the baud
 *                       rate as passed in CX.
 *                      Commands 8-F access the virtual UART registers.
 *                       CX indicates how the register is to be changed.
 *                       CH indicates which bits to clear in the register,
 *                       while CL indicates which bits to complement. If
 *                       CX = 0 the register is read but not written. If
 *                       CH = 0xFF the value in CL is written to the register.
 *                       In all other cases the register is both read and
 *                       written to.  CL is always set to the value written
 *                       to the register if any, or the value read if not.
 *                       Note that 0 is always THR/RBR and 1 is IER.
 *                       Use command 7 to change the baud rate.
 *
 *     Client (CX)    = Port Data or Buffer Size
 *     Client (DS:SI) = Read Message Buffer
 *     Client (ES:DI) = Send Message Buffer
 *
 * Return Value:
 *     Client Carry Clear:  SUCCESS
 *     Client Carry Set:    FAILURE
 * 
 */
VOID VDDDispatch( VOID )
{
    USHORT  PortCommand;
    PCHAR   Buffer;
    tAdapter adapter;
    USHORT  PassCX;
    BYTE    temp;

    setCF( 0 );                         // Assume success

    PortCommand = getDX();
    adapter = adapter_for_port( (PortCommand & ~0xF) | 8 );

    if (adapter >= NUM_SERIAL_PORTS) {
        setCF( 1 );                     // ERROR: unknown serial port
    }
    else {
        PassCX = getCX();               // all commands us CX
        switch (PortCommand & 0xF) {
        case 0: // Write buffer
            Buffer = (PCHAR) GetVDMPointer((ULONG)(getDS()<<16|getSI()),PassCX,FALSE);
            break;
        case 1: // Read buffer
            Buffer = (PCHAR) GetVDMPointer((ULONG)(getES()<<16|getDI()),PassCX,FALSE);
            break;
        case 7: // Set baud rate
            break;
        case 8:  // THR & RBR
        case 9:  // IED
        case 10: // IIR
        case 11: // LCR
        case 12: // MCR
        case 13: // LSR
        case 14: // MSR
        case 15: // SCR
            if (PassCX == 0)
            {
                com_inb( PortCommand, &temp );
                // do not write to port
                setCL( temp );
            }
            else if ((PassCX & 0xFF00) == 0xFF00)
            {
                // do not read from port
                com_outb( PortCommand, (BYTE) PassCX );
            }
            else
            {
                com_inb( PortCommand, &temp );
                temp = (BYTE)((temp & ~(PassCX >> 8)) ^ PassCX);
                com_outb( PortCommand, temp );
                setCL( temp );
            }
            break;
        default: // unknown command
            break;
        }
    }

    return;
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
26uuu成人网一区二区三区| 欧美亚洲一区三区| 美国三级日本三级久久99| 亚洲一区中文在线| 亚洲日本成人在线观看| 亚洲欧美一区二区在线观看| 亚洲国产精品成人综合色在线婷婷| 久久综合色鬼综合色| 欧美成人精品福利| 久久久www成人免费毛片麻豆| 久久一区二区三区四区| 久久久精品中文字幕麻豆发布| 国产欧美一区二区三区沐欲| 国产网站一区二区| 国产精品理论片| 亚洲精品写真福利| 色综合久久久久久久久久久| 久久99精品国产麻豆不卡| 亚洲国产精品视频| 亚洲第一二三四区| 免费看日韩a级影片| 久久国产精品免费| 久久国产人妖系列| 成人免费毛片a| 91国在线观看| 日韩欧美一区二区免费| 国产拍欧美日韩视频二区| 一色屋精品亚洲香蕉网站| 亚洲国产aⅴ成人精品无吗| 日本女人一区二区三区| 国产成人精品综合在线观看| 色国产综合视频| 日韩三级视频中文字幕| 日本一区二区三区国色天香| 亚洲综合一二区| 国产精品一区二区三区四区 | 日本二三区不卡| 91精品啪在线观看国产60岁| 国产日韩欧美高清| 亚洲一区二区三区四区在线| 激情综合一区二区三区| 色婷婷精品大在线视频| 精品乱码亚洲一区二区不卡| 一区二区三区在线观看动漫| 国产在线观看一区二区| 欧美性做爰猛烈叫床潮| 亚洲国产成人在线| 久久不见久久见免费视频1| 色综合夜色一区| 久久久精品2019中文字幕之3| 亚洲一区二区三区中文字幕| 国产精品12区| 日韩视频一区二区三区在线播放| 国产精品女人毛片| 久久精品国产99| 欧美日韩国产片| 一区二区视频在线看| 国产成人自拍网| 精品成人佐山爱一区二区| 亚洲欧美日韩国产综合| 国产ts人妖一区二区| 日韩欧美成人激情| 丝袜美腿亚洲色图| 欧美亚州韩日在线看免费版国语版| 国产亚洲精品bt天堂精选| 久久精品国产久精国产| 777午夜精品视频在线播放| 亚洲欧美日韩中文播放| 成人激情av网| 国产精品国产馆在线真实露脸 | 中文字幕一区视频| 丁香婷婷综合激情五月色| 亚洲精品一区二区三区精华液| 午夜不卡av免费| 在线观看91精品国产麻豆| 一区二区三区蜜桃| 欧美伊人久久久久久久久影院 | 国产成人av一区二区三区在线观看| 欧美一级日韩不卡播放免费| 亚洲国产日韩一级| 欧美日韩中文精品| 日日摸夜夜添夜夜添国产精品 | 日韩高清在线观看| 91精品婷婷国产综合久久性色| 亚洲成人av在线电影| 7777精品伊人久久久大香线蕉的| 午夜av区久久| 欧美va亚洲va国产综合| 国产精品1区二区.| 中文字幕日韩精品一区| 欧美在线观看一二区| 日本强好片久久久久久aaa| 欧美一级精品大片| 国产精品66部| 亚洲另类春色国产| 欧美顶级少妇做爰| 国产成人免费视频网站高清观看视频| 欧美精品一区二区久久久 | 综合色中文字幕| 在线影视一区二区三区| 日韩中文字幕91| 国产视频一区在线观看| 一本到不卡精品视频在线观看| 一区二区三区在线视频播放| 欧美一级搡bbbb搡bbbb| 成人免费高清在线| 五月天国产精品| 久久久久久久久蜜桃| 色婷婷久久久久swag精品| 免费看欧美女人艹b| 国产精品入口麻豆九色| 欧美日本韩国一区| 国产福利一区二区三区视频在线 | 欧美剧情电影在线观看完整版免费励志电影 | 日韩视频国产视频| hitomi一区二区三区精品| 亚洲国产毛片aaaaa无费看| 久久综合九色综合欧美就去吻| 99天天综合性| 美女任你摸久久| 亚洲一区二区精品视频| 久久综合久久鬼色中文字| 91色porny| 久久国产欧美日韩精品| 亚洲精品自拍动漫在线| 久久色.com| 91精品国产一区二区三区蜜臀| 国产一区二区伦理| 亚洲成av人片www| 国产精品天美传媒| 欧美成人精品二区三区99精品| 日本精品一区二区三区高清| 国产91精品欧美| 久久99精品久久久久久国产越南 | 日韩视频在线观看一区二区| 色综合激情五月| 成人做爰69片免费看网站| 蜜臀国产一区二区三区在线播放| 亚洲一二三四在线| 一区二区三区四区高清精品免费观看| 久久久久久97三级| www久久精品| 欧美sm美女调教| 欧美日韩免费一区二区三区视频| 国产成人精品午夜视频免费| 久久99精品国产.久久久久| 日本在线不卡视频| 亚洲成在线观看| 亚洲狠狠丁香婷婷综合久久久| 亚洲欧美自拍偷拍色图| 国产精品激情偷乱一区二区∴| 欧美国产一区视频在线观看| 久久综合九色综合欧美就去吻| 精品国产免费视频| 欧美猛男男办公室激情| 欧美巨大另类极品videosbest | 国产一区二区三区视频在线播放| 日本不卡不码高清免费观看| 日本欧美在线观看| 麻豆久久久久久| 色噜噜偷拍精品综合在线| av在线不卡电影| 色综合天天在线| 欧美日韩精品一区二区| 欧美精品99久久久**| 日韩一级黄色大片| 精品久久久网站| 国产精品欧美久久久久无广告| 亚洲欧洲一区二区在线播放| 亚洲理论在线观看| 亚洲不卡在线观看| 美女一区二区视频| 国产成人精品午夜视频免费| 91一区二区在线| 欧美日韩成人综合| 久久一留热品黄| 亚洲精品成人天堂一二三| 亚洲一级二级在线| 老汉av免费一区二区三区 | 亚洲免费看黄网站| 天堂va蜜桃一区二区三区 | 蜜臀久久99精品久久久久宅男| 国产乱人伦偷精品视频不卡| 成人听书哪个软件好| 欧美日韩在线电影| 欧美精品一区在线观看| 亚洲伦理在线免费看| 日本亚洲视频在线| 岛国精品在线播放| 欧美久久久一区| 国产女人18毛片水真多成人如厕| 亚洲日本va午夜在线电影| 婷婷综合五月天| 成人深夜在线观看| 91精品国产麻豆国产自产在线| 国产日韩欧美精品在线| 日韩avvvv在线播放| 99国产精品久久久久| 欧美成人精精品一区二区频| 一区二区三区在线影院|