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

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

?? fileio98.cpp

?? ezUSB fireware 的固件
?? CPP
字號:
// FILEIO98.CPP -- VxD interfaces for File I/O operations
// Copyright (C) 1999 by Walter Oney
// All rights reserved

#if DBG
	#define DEBUG
#else
	#undef DEBUG
#endif

extern "C" {

#define WANTVXDWRAPS
#include <basedef.h>
#include <debug.h>
#include <vmm.h>
#include "ifsmgr.h"
#include <vxdwraps.h>
#include <string.h>

typedef struct _FILE_HANDLE {
	DWORD hfile;				// file system handle
	BOOL i21;					// TRUE if opened via INT 21 call
	DWORD pos;					// file position for IFSMgr R/W calls
	} FILE_HANDLE, *PFILE_HANDLE;

#define SEEK_CUR    1
#define SEEK_END    2
#define SEEK_SET    0

#define STATUS_SUCCESS 0
#define STATUS_UNSUCCESSFUL 0xC0000001
#define STATUS_INSUFFICIENT_RESOURCES 0xC000009A

///////////////////////////////////////////////////////////////////////////////

#pragma warning(disable:4035)

DWORD SeekI21File(DWORD hfile, DWORD pos, int origin) {
	_asm {
		mov eax, 4200h			; fcn 42: seek
		mov al, byte ptr origin
		mov ebx, hfile
		mov edx, pos
		mov ecx, edx
		shr ecx, 16
		push 21h
		}
	VMMCall(Exec_VxD_Int)
	_asm {
		movzx eax, ax
		shl edx, 16
		or eax, edx
		}
	}

#pragma warning(default:4035)

///////////////////////////////////////////////////////////////////////////////

ULONG Win98OpenFile(PWORD filename, BYTE read, PFILE_HANDLE* phandle) {
	DWORD hfile;
	DWORD actiontaken;
	BOOL i21;

// Convert name to OEM character set
	char name[MAX_PATH];
	name[UniToBCS((PBYTE) name, filename, wcslen(filename) * 2, sizeof(name)-2, BCS_OEM)] = 0;

// Intepret SystemRoot if it's present as the first directory name in the path
	_strlwr(name);
	if (memcmp(name, "\\systemroot", 11) == 0) {
		char* windir = Get_Config_Directory();
		char newname[MAX_PATH];
		strcpy(newname, windir);
		newname[strlen(windir)-1] = 0;	// remove NULL at end of directory name
		strcat(newname, name + 11);
		strcpy(name, newname);
		}

// Develop arguments to the open function
	WORD modeflags = read ? ACCESS_READONLY : ACCESS_WRITEONLY;
	WORD shareflags = read ? SHARE_DENYWRITE : SHARE_DENYREADWRITE;
	WORD attrib = 0;
	BYTE action = read ? ACTION_OPENEXISTING : ACTION_CREATEALWAYS;
	BYTE flags = 0;

	int code;

	if (VMM_GetSystemInitState() >= SYSSTATE_PREINITCOMPLETE) {		// call IFSMgr
		code = R0_OpenCreateFile(TRUE, modeflags | shareflags, attrib, action, flags, name, &hfile, &actiontaken);
		i21 = FALSE;
		}
	else {						// use INT 21
		_asm {
			mov eax, 6C00h		; AX = function code (extended open/create)
			mov bx, modeflags	; BX = mode & share flags
			or  bx, shareflags
			mov cx, attrib;		; CX = attributes when creating file
			mov dl, action		; DL = action code
			xor dh, dh			; DH = flags (must be zero)
			lea esi, name		; ESI -> name of file to open
			push 21h			; push 21h as arg for Exec_Vxd_Int
			}
		VMMCall(Exec_VxD_Int);
		_asm
			{					// test return code
			movzx eax, ax
			jc    error			; skip if error
			mov   hfile, eax
			xor	  eax, eax		; STATUS_SUCCESS
error:		mov   code, eax		; save error code
			}					// test return code
		i21 = TRUE;
		}
	if (code != 0) return STATUS_UNSUCCESSFUL;
		
	PFILE_HANDLE hp = (PFILE_HANDLE) _HeapAllocate(sizeof(FILE_HANDLE), 0);
	if (!hp) return STATUS_INSUFFICIENT_RESOURCES;

	hp->hfile = hfile;
	hp->i21 = i21;
	hp->pos = 0;
	*phandle = hp;
	return STATUS_SUCCESS;
	}

///////////////////////////////////////////////////////////////////////////////

ULONG Win98CloseFile(PFILE_HANDLE handle) {
	if (handle->i21) {			// close INT 21 handle
		_asm {
			mov eax, 3E00h		; fcn 3E: close file
			mov esi, handle
			mov ebx, [esi]FILE_HANDLE.hfile
			push 21h
			}
		VMMCall(Exec_VxD_Int)
		}
	else R0_CloseFile(handle->hfile);

	_HeapFree(handle, 0);
	return STATUS_SUCCESS;
	}

///////////////////////////////////////////////////////////////////////////////

ULONG Win98GetFileSize(PFILE_HANDLE handle) {
	DWORD eof;

	if (handle->i21) {			// get size using INT 21 handle
		DWORD curpos = SeekI21File(handle->hfile, 0, SEEK_CUR);
		eof = SeekI21File(handle->hfile, 0, SEEK_END);
		SeekI21File(handle->hfile, curpos, SEEK_SET);
		}
	else {						// use IFSMgr
		if (R0_GetFileSize(handle->hfile, &eof) != 0) eof = 0xFFFFFFFF;
		}
	return eof;
	}

///////////////////////////////////////////////////////////////////////////////

ULONG Win98ReadFile(PFILE_HANDLE handle, PBYTE buffer, ULONG nbytes, PULONG pnumread) {
	int code;
	DWORD numread;

	if (handle->i21) {			// read via INT 21 handle
		_asm {
			mov eax, 3F00h		; fcn 3F: read file
			mov esi, handle
			mov ebx, [esi]FILE_HANDLE.hfile
			mov ecx, nbytes
			mov edx, buffer
			push 21h
			}
		VMMCall(Exec_VxD_Int)
		_asm  {
			mov numread, eax	; assume success
			sbb eax, eax		; EAX = 0 if success, -1 if error
			mov code, eax
			}
		}
	else code = R0_ReadFile(TRUE, handle->hfile, nbytes, handle->pos, buffer, &numread);

	if (code == 0) {			// success
		*pnumread = numread;
		handle->pos += numread;
		return STATUS_SUCCESS;
		}

	return STATUS_UNSUCCESSFUL;
	}

///////////////////////////////////////////////////////////////////////////////

ULONG Win98WriteFile(PFILE_HANDLE handle, PBYTE buffer, ULONG nbytes, PULONG pnumwritten) {
	int code;
	DWORD numwritten;

	if (handle->i21) {			// write via INT 21 handle
		_asm {
			mov eax, 4000h		; fcn 40: write file
			mov esi, handle
			mov ebx, [esi]FILE_HANDLE.hfile
			mov ecx, nbytes
			mov edx, buffer
			push 21h
			}
		VMMCall(Exec_VxD_Int)
		_asm {
			mov numwritten, eax	; assume success
			sbb eax, eax		; EAX = 0 if success, -1 if error
			mov code, eax
			}
		}
	else code = R0_WriteFile(TRUE, handle->hfile, nbytes, handle->pos, buffer, &numwritten);

	if (code == 0) {			// success
		*pnumwritten = numwritten;
		handle->pos += numwritten;
		return STATUS_SUCCESS;
		}

	return STATUS_UNSUCCESSFUL;
	}

} // extern "C"

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩精品免费观看视频| 欧美视频一区二区在线观看| 日韩精品高清不卡| 亚洲va在线va天堂| 日韩国产一区二| 蜜桃免费网站一区二区三区| 捆绑调教美女网站视频一区| 免费人成精品欧美精品| 久久不见久久见免费视频7 | 在线观看av不卡| 在线一区二区三区四区| 欧美这里有精品| 欧美一三区三区四区免费在线看| 日韩女优毛片在线| 国产日韩av一区| 夜夜精品浪潮av一区二区三区| 亚洲午夜精品在线| 日本欧美一区二区三区乱码| 国产一区二区三区久久久| 国产v综合v亚洲欧| 在线亚洲+欧美+日本专区| 欧美精品一级二级| 国产亚洲欧美一区在线观看| 亚洲欧洲日韩av| 蜜桃传媒麻豆第一区在线观看| 国产精品资源在线| 欧美综合视频在线观看| 精品久久久久久久久久久久久久久久久 | 色综合久久中文字幕| 欧美日韩精品一区二区三区四区 | 成人美女视频在线观看| 色婷婷综合久久久久中文一区二区| 欧美日韩精品欧美日韩精品| 亚洲精品在线网站| 亚洲一区影音先锋| 国产乱人伦精品一区二区在线观看| 91小宝寻花一区二区三区| 欧美日韩卡一卡二| 中文字幕乱码一区二区免费| 亚洲午夜日本在线观看| 国产91精品一区二区| 欧美日韩在线免费视频| 国产女同互慰高潮91漫画| 亚洲bdsm女犯bdsm网站| av在线播放成人| 精品久久国产字幕高潮| 亚洲小少妇裸体bbw| kk眼镜猥琐国模调教系列一区二区 | 亚洲一区中文在线| av在线播放成人| 久久久久久黄色| 亚洲电影在线播放| av激情亚洲男人天堂| 2017欧美狠狠色| 日韩专区欧美专区| 欧美性高清videossexo| 中文字幕欧美一| 成人免费看视频| 久久综合色鬼综合色| 麻豆精品视频在线观看视频| 欧美日韩一级片在线观看| 中文字幕一区免费在线观看| 狠狠色丁香久久婷婷综| 日韩一区二区在线看片| 午夜久久久影院| 欧美日韩aaa| 亚洲第一久久影院| 在线观看日韩电影| 一区二区三区欧美日韩| 一本色道亚洲精品aⅴ| 国产精品毛片高清在线完整版| 国产精品一级黄| 国产亚洲一区二区三区四区 | 国产成人午夜高潮毛片| 久久久亚洲精华液精华液精华液 | 日本精品视频一区二区| 亚洲四区在线观看| 91免费版在线| 一区二区在线电影| 在线精品视频免费观看| 亚洲成av人片在www色猫咪| 在线观看精品一区| 亚洲成人久久影院| 欧美一区二区三区喷汁尤物| 日韩有码一区二区三区| 91精品国产免费久久综合| 精品一区二区三区在线观看| 久久综合久久综合九色| 成人自拍视频在线观看| 亚洲欧洲综合另类| 欧美图区在线视频| 奇米四色…亚洲| 久久久不卡影院| 色综合久久久久综合体桃花网| 一区二区三区四区亚洲| 日韩欧美亚洲另类制服综合在线| 国产在线乱码一区二区三区| 久久久高清一区二区三区| 色综合视频在线观看| 日韩国产成人精品| 欧美国产一区视频在线观看| 在线观看一区不卡| 美女国产一区二区三区| 中文字幕一区日韩精品欧美| 欧美色涩在线第一页| 激情欧美一区二区| 亚洲一区在线免费观看| 精品欧美一区二区久久 | 美脚の诱脚舐め脚责91| 中文字幕av不卡| 在线不卡中文字幕| 成人性生交大片免费看中文网站| 亚洲成人动漫在线观看| 久久精品视频在线看| 欧美视频三区在线播放| 国产成人免费av在线| 亚洲成人黄色小说| 国产精品二三区| 精品少妇一区二区三区日产乱码 | 精品福利视频一区二区三区| 色国产精品一区在线观看| 久久99最新地址| 亚洲一级在线观看| 国产精品不卡一区二区三区| 久久女同互慰一区二区三区| 欧美日韩黄色一区二区| 色综合久久天天| 国产91精品欧美| 精品一二线国产| 午夜精品久久久久久久| 亚洲欧美一区二区三区孕妇| 国产清纯白嫩初高生在线观看91 | 国产永久精品大片wwwapp| 婷婷一区二区三区| 亚洲男人的天堂一区二区| 久久精品视频一区二区| 日韩精品一区二区三区视频| 欧美老肥妇做.爰bbww| 欧洲一区在线电影| 99vv1com这只有精品| 不卡视频在线看| 国产东北露脸精品视频| 久久99精品国产麻豆婷婷洗澡| 午夜精品福利视频网站| 亚洲成人av一区二区| 一二三四区精品视频| 一区二区三区中文字幕在线观看| 1024亚洲合集| 亚洲欧美一区二区三区孕妇| 亚洲人午夜精品天堂一二香蕉| 国产精品成人免费在线| 欧美高清在线视频| 国产精品欧美久久久久无广告| 国产日韩欧美麻豆| 国产精品蜜臀av| 亚洲男人天堂av网| 亚洲一区视频在线| 日韩高清国产一区在线| 青青草视频一区| 国产精品资源网站| 99久久夜色精品国产网站| 97精品国产97久久久久久久久久久久 | 精品国产精品网麻豆系列| 久久众筹精品私拍模特| 欧美国产欧美亚州国产日韩mv天天看完整 | 亚洲欧洲日韩综合一区二区| 亚洲女厕所小便bbb| 亚洲午夜成aⅴ人片| 免费国产亚洲视频| 国产福利精品一区二区| 色综合久久久网| 日韩欧美黄色影院| 国产精品免费视频一区| 亚洲国产日韩在线一区模特| 蜜臀久久久99精品久久久久久| 国产福利视频一区二区三区| 日本高清免费不卡视频| 日韩一区二区免费视频| 亚洲国产精品黑人久久久| 一区二区成人在线视频| 三级一区在线视频先锋| 国产成人免费9x9x人网站视频| 色噜噜狠狠一区二区三区果冻| 欧美蜜桃一区二区三区| 国产三级精品三级| 亚洲一区二区偷拍精品| 国产精品99久久久久久久vr | 欧美国产日韩亚洲一区| 亚洲成a人片在线不卡一二三区| 精品一区二区三区免费观看| bt7086福利一区国产| 欧美丰满嫩嫩电影| 国产精品国产三级国产有无不卡| 亚洲第一成年网| 丁香天五香天堂综合| 欧美精品粉嫩高潮一区二区| 国产精品免费久久久久| 久久99精品国产麻豆不卡| 色噜噜久久综合| 国产精品久久久久一区二区三区 |