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

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

?? deviceio.c

?? ReactOS是一些高手根據Windows XP的內核編寫出的類XP。內核實現機理和API函數調用幾乎相同。甚至可以兼容XP的程序。喜歡研究系統內核的人可以看一看。
?? C
字號:
/* $Id: deviceio.c 21253 2006-03-08 21:33:04Z audit $
 *
 * COPYRIGHT:       See COPYING in the top level directory
 * PROJECT:         ReactOS system libraries
 * FILE:            lib/kernel32/file/deviceio.c
 * PURPOSE:         Device I/O and Overlapped Result functions
 * PROGRAMMER:      Ariadne (ariadne@xs4all.nl)
 * UPDATE HISTORY:
 *                  Created 01/11/98
 */

#include <k32.h>

#define NDEBUG
#include "../include/debug.h"


/*
 * @implemented
 */
BOOL
STDCALL
DeviceIoControl(IN HANDLE hDevice,
                IN DWORD dwIoControlCode,
                IN LPVOID lpInBuffer  OPTIONAL,
                IN DWORD nInBufferSize  OPTIONAL,
                OUT LPVOID lpOutBuffer  OPTIONAL,
                IN DWORD nOutBufferSize  OPTIONAL,
                OUT LPDWORD lpBytesReturned  OPTIONAL,
                IN LPOVERLAPPED lpOverlapped  OPTIONAL)
{
   BOOL FsIoCtl;
   NTSTATUS Status;

   FsIoCtl = ((dwIoControlCode >> 16) == FILE_DEVICE_FILE_SYSTEM);

   if (lpBytesReturned != NULL)
     {
        *lpBytesReturned = 0;
     }

   if (lpOverlapped != NULL)
     {
        PVOID ApcContext;

        lpOverlapped->Internal = STATUS_PENDING;
        ApcContext = (((ULONG_PTR)lpOverlapped->hEvent & 0x1) ? NULL : lpOverlapped);

        if (FsIoCtl)
          {
             Status = NtFsControlFile(hDevice,
                                      lpOverlapped->hEvent,
                                      NULL,
                                      ApcContext,
                                      (PIO_STATUS_BLOCK)lpOverlapped,
                                      dwIoControlCode,
                                      lpInBuffer,
                                      nInBufferSize,
                                      lpOutBuffer,
                                      nOutBufferSize);
          }
        else
          {
             Status = NtDeviceIoControlFile(hDevice,
                                            lpOverlapped->hEvent,
                                            NULL,
                                            ApcContext,
                                            (PIO_STATUS_BLOCK)lpOverlapped,
                                            dwIoControlCode,
                                            lpInBuffer,
                                            nInBufferSize,
                                            lpOutBuffer,
                                            nOutBufferSize);
          }

        /* return FALSE in case of failure and pending operations! */
        if (!NT_SUCCESS(Status) || Status == STATUS_PENDING)
          {
             SetLastErrorByStatus(Status);
             return FALSE;
          }

        if (lpBytesReturned != NULL)
          {
             *lpBytesReturned = lpOverlapped->InternalHigh;
          }
     }
   else
     {
        IO_STATUS_BLOCK Iosb;

        if (FsIoCtl)
          {
             Status = NtFsControlFile(hDevice,
                                      NULL,
                                      NULL,
                                      NULL,
                                      &Iosb,
                                      dwIoControlCode,
                                      lpInBuffer,
                                      nInBufferSize,
                                      lpOutBuffer,
                                      nOutBufferSize);
          }
        else
          {
             Status = NtDeviceIoControlFile(hDevice,
                                            NULL,
                                            NULL,
                                            NULL,
                                            &Iosb,
                                            dwIoControlCode,
                                            lpInBuffer,
                                            nInBufferSize,
                                            lpOutBuffer,
                                            nOutBufferSize);
          }

        /* wait in case operation is pending */
        if (Status == STATUS_PENDING)
          {
             Status = NtWaitForSingleObject(hDevice,
                                            FALSE,
                                            NULL);
             if (NT_SUCCESS(Status))
               {
                  Status = Iosb.Status;
               }
          }

        if (NT_SUCCESS(Status))
          {
             /* lpBytesReturned must not be NULL here, in fact Win doesn't
                check that case either and crashes (only after the operation
                completed) */
             *lpBytesReturned = Iosb.Information;
          }
        else
          {
             SetLastErrorByStatus(Status);
             return FALSE;
          }
     }

   return TRUE;
}


/*
 * @implemented
 */
BOOL
STDCALL
GetOverlappedResult (
  IN HANDLE   hFile,
	IN LPOVERLAPPED	lpOverlapped,
	OUT LPDWORD		lpNumberOfBytesTransferred,
	IN BOOL		bWait
	)
{
	DWORD WaitStatus;
  HANDLE hObject;

  if (lpOverlapped->Internal == STATUS_PENDING)
  {
    if (!bWait)
    {
      /* can't use SetLastErrorByStatus(STATUS_PENDING) here,
      since STATUS_PENDING translates to ERROR_IO_PENDING */
      SetLastError(ERROR_IO_INCOMPLETE);
      return FALSE;
    }

    hObject = lpOverlapped->hEvent ? lpOverlapped->hEvent : hFile;

    /* Wine delivers pending APC's while waiting, but Windows does
    not, nor do we... */
    WaitStatus = WaitForSingleObject(hObject, INFINITE);

    if (WaitStatus == WAIT_FAILED)
    {
      DPRINT("Wait failed!\n");
      /* WaitForSingleObjectEx sets the last error */
      return FALSE;
    }
  }

  *lpNumberOfBytesTransferred = lpOverlapped->InternalHigh;

  if (!NT_SUCCESS(lpOverlapped->Internal))
  {
    SetLastErrorByStatus(lpOverlapped->Internal);
    return FALSE;
  }

	return TRUE;
}

/* EOF */


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级一区二区| 久久精品亚洲一区二区三区浴池| 欧美xxx久久| 国产精品久久久久毛片软件| 最新国产成人在线观看| 日本视频一区二区| 成人app网站| 精品盗摄一区二区三区| 亚洲国产精品欧美一二99| 九九久久精品视频| 91精品国产色综合久久不卡蜜臀| 国产精品人妖ts系列视频| 理论电影国产精品| 欧美视频一二三区| 成人免费在线视频观看| 狠狠狠色丁香婷婷综合激情| 欧美无乱码久久久免费午夜一区 | 日韩av不卡一区二区| 成人免费av网站| 26uuu精品一区二区 | 亚洲欧洲色图综合| 国产高清一区日本| 久久夜色精品一区| 韩国理伦片一区二区三区在线播放| 欧美天堂亚洲电影院在线播放| 国产精品卡一卡二卡三| 国产成人aaa| 欧美tickling挠脚心丨vk| 欧美白人最猛性xxxxx69交| 日韩精品久久理论片| 欧美日韩久久一区二区| 一区二区三区在线视频观看58| www.久久久久久久久| 亚洲国产精品av| www.亚洲激情.com| 亚洲男同性恋视频| 欧美三级在线播放| 天天做天天摸天天爽国产一区| 欧美性受xxxx黑人xyx| 亚洲已满18点击进入久久| 欧美性猛交一区二区三区精品| 一区二区三区欧美在线观看| 在线观看av一区二区| 一区二区三区欧美| 91精品国产综合久久精品麻豆| 日本中文字幕一区二区有限公司| 日韩美一区二区三区| 国产毛片精品国产一区二区三区| 久久久久九九视频| 99久久精品一区二区| ...xxx性欧美| 欧美日韩视频在线观看一区二区三区| 一区二区三区影院| 91精品国产综合久久精品麻豆| 麻豆精品在线播放| 国产性天天综合网| 日韩中文字幕区一区有砖一区 | 欧美自拍偷拍一区| 午夜精品在线看| 久久亚区不卡日本| 99精品热视频| 天天av天天翘天天综合网| 欧美成va人片在线观看| 99精品视频一区| 美国十次综合导航| 亚洲视频一二三| 日韩欧美自拍偷拍| 91香蕉视频污| 美腿丝袜一区二区三区| 亚洲私人影院在线观看| 欧美一级欧美三级| 99久久久国产精品免费蜜臀| 免费一级欧美片在线观看| 欧美激情一区二区三区在线| 欧美高清dvd| www.视频一区| 韩国午夜理伦三级不卡影院| 一区二区三区欧美激情| 国产欧美日韩不卡免费| 欧美精品黑人性xxxx| 91理论电影在线观看| 激情综合色综合久久| 亚洲图片欧美一区| 国产精品麻豆99久久久久久| 欧美日韩极品在线观看一区| 成人激情动漫在线观看| 久久国产麻豆精品| 亚洲国产精品久久艾草纯爱| 国产精品盗摄一区二区三区| 精品国产一区二区三区忘忧草| 在线观看国产91| 91欧美激情一区二区三区成人| 精品影视av免费| 石原莉奈在线亚洲三区| 一区二区三区国产精华| 国产精品久久久久久户外露出| 欧美一级日韩一级| 欧美日韩国产精品自在自线| 色婷婷香蕉在线一区二区| 国产成人精品一区二| 久久国产乱子精品免费女| 日本亚洲视频在线| 五月婷婷激情综合网| 亚洲一区在线播放| 亚洲少妇中出一区| 亚洲欧洲成人精品av97| 国产欧美日韩卡一| 国产欧美日韩卡一| 欧美韩国一区二区| 日本一区二区不卡视频| 国产色婷婷亚洲99精品小说| 2023国产精品| 久久色在线视频| 久久品道一品道久久精品| 日韩三级免费观看| 精品国产区一区| 久久久99精品免费观看| 久久综合精品国产一区二区三区| 日韩美一区二区三区| www精品美女久久久tv| 久久综合久色欧美综合狠狠| 久久久亚洲午夜电影| 久久久一区二区三区| 国产女主播在线一区二区| 日本一区二区三区视频视频| 欧美国产欧美综合| 亚洲丝袜制服诱惑| 亚洲一二三区视频在线观看| 亚洲电影在线播放| 日韩精彩视频在线观看| 美女视频网站久久| 国产成人在线视频网站| 不卡电影免费在线播放一区| 91麻豆精品秘密| 欧美精品在欧美一区二区少妇| 欧美一级艳片视频免费观看| 精品国产青草久久久久福利| 国产精品看片你懂得| 洋洋av久久久久久久一区| 亚洲h精品动漫在线观看| 裸体歌舞表演一区二区| 福利电影一区二区三区| 欧洲精品一区二区| 欧美v日韩v国产v| 中文字幕av不卡| 亚洲香肠在线观看| 九色综合国产一区二区三区| 国产成人午夜精品5599| 欧美午夜精品一区二区三区| 精品国内片67194| 亚洲欧洲制服丝袜| 久久成人av少妇免费| 99re视频这里只有精品| 欧美一区二区视频在线观看| 中文字幕av不卡| 日本午夜一区二区| a在线播放不卡| 欧美一区二区三区白人| 国产精品午夜电影| 喷水一区二区三区| 91同城在线观看| 欧美精品一区在线观看| 一区二区三区四区av| 国产精品一二三四五| 91久久精品日日躁夜夜躁欧美| 日韩精品一区二区三区swag | 日韩av一级片| av中文字幕不卡| 日韩精品影音先锋| 亚洲国产综合视频在线观看| 东方欧美亚洲色图在线| 欧美精品精品一区| 一区二区三区久久久| 成人综合婷婷国产精品久久蜜臀| 欧美日韩情趣电影| 亚洲欧洲综合另类| 丁香啪啪综合成人亚洲小说| 精品久久久三级丝袜| 日本欧美韩国一区三区| 欧美在线观看视频一区二区| 中文字幕久久午夜不卡| 久久99在线观看| 欧美日韩1区2区| 夜夜嗨av一区二区三区四季av| 国产精品一区二区免费不卡| 日韩欧美高清在线| 日韩高清电影一区| 欧美图区在线视频| 亚洲一区二区在线免费观看视频| 99国产欧美另类久久久精品| 国产女同性恋一区二区| 久88久久88久久久| 亚洲精品在线三区| 久久er99热精品一区二区| 欧美蜜桃一区二区三区| 亚洲一区二区三区四区中文字幕| 91蜜桃传媒精品久久久一区二区| 欧美精彩视频一区二区三区| 国产综合色精品一区二区三区| 久久综合色综合88|