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

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

?? deviceio.c

?? 一個類似windows
?? 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一区二区三区免费野_久草精品视频
欧美日韩电影在线播放| 亚洲色欲色欲www| 国产精品国产三级国产a| 丝袜a∨在线一区二区三区不卡| 国内精品久久久久影院色| 欧美视频一区二| 国产精品久久久久永久免费观看| 爽好久久久欧美精品| 色婷婷综合五月| 国产精品乱码人人做人人爱| 久久er99精品| 欧美一区二区三区四区视频| 一区二区三区成人在线视频| 国产盗摄一区二区| 欧美成人激情免费网| 亚洲午夜久久久久久久久电影网 | 日韩一级免费一区| 亚洲男人的天堂在线观看| 国产九色精品成人porny| 在线成人午夜影院| 亚洲国产va精品久久久不卡综合| 97久久精品人人澡人人爽| 国产女人18水真多18精品一级做| 青青草一区二区三区| 国产精品国产三级国产普通话蜜臀 | 欧美久久一二三四区| 亚洲免费观看高清| 99精品视频在线播放观看| 久久香蕉国产线看观看99| 精品一区二区日韩| 欧美第一区第二区| 精品午夜久久福利影院| 日韩欧美一二三四区| 久久国产精品色婷婷| 精品国产乱码久久久久久免费| 日日夜夜一区二区| 欧美成人艳星乳罩| 国产精品一区免费视频| 久久久亚洲国产美女国产盗摄| 久久精品国产99| 久久―日本道色综合久久| 国产激情视频一区二区三区欧美| 国产夜色精品一区二区av| 国产99精品视频| 亚洲欧洲日韩在线| 欧美性一二三区| 日韩中文字幕麻豆| 久久免费精品国产久精品久久久久| 国产九色精品成人porny| 中文字幕亚洲精品在线观看| 色综合天天综合网国产成人综合天| 亚洲综合一区在线| 欧美成人aa大片| 成人av在线观| 日韩成人午夜电影| 国产亚洲欧洲997久久综合| av午夜一区麻豆| 日韩精品视频网站| 日本一区二区三级电影在线观看| 99久久免费国产| 日韩在线一二三区| 国产日韩欧美一区二区三区综合| 在线观看国产一区二区| 久久精品99久久久| 日韩理论片一区二区| 亚洲精品老司机| 欧美日本韩国一区| 国产成人精品1024| 亚洲va欧美va天堂v国产综合| 欧美日韩国产欧美日美国产精品| 蜜桃久久久久久| 欧美绝品在线观看成人午夜影视| 国产成人av一区二区三区在线| 国产精品久久久久久久久免费桃花 | 日韩一区二区在线免费观看| 乱中年女人伦av一区二区| 国产欧美久久久精品影院| 91免费版pro下载短视频| 综合av第一页| 久久免费偷拍视频| 国产精品伊人色| 亚洲综合免费观看高清在线观看| 欧美亚州韩日在线看免费版国语版| 日日骚欧美日韩| 国产精品国产三级国产普通话蜜臀| 精品视频999| 国产精品三级av| 欧美草草影院在线视频| 成人va在线观看| 美女精品自拍一二三四| 日韩美女精品在线| 精品播放一区二区| 欧美视频自拍偷拍| 成人午夜电影小说| 日韩精品乱码av一区二区| 国产精品免费av| 日韩欧美国产午夜精品| 97久久久精品综合88久久| 精品系列免费在线观看| 亚洲国产日韩a在线播放性色| 久久久精品免费网站| 91久久线看在观草草青青| 97国产一区二区| 国产九色sp调教91| 另类小说一区二区三区| 青青草97国产精品免费观看| 亚洲综合一二三区| 亚洲欧美影音先锋| 日韩写真欧美这视频| 欧美午夜宅男影院| 成人高清免费在线播放| 国产精品一二三在| 经典三级视频一区| 蜜臀91精品一区二区三区| 亚洲第一搞黄网站| 有坂深雪av一区二区精品| 91精品国产综合久久精品app| 色综合咪咪久久| 国产成人免费在线视频| 精品午夜久久福利影院 | 欧美特级限制片免费在线观看| 国产999精品久久久久久| 美女诱惑一区二区| 日本欧美在线看| 亚洲精品成人少妇| 午夜日韩在线观看| 香蕉影视欧美成人| 日韩综合在线视频| 日韩中文字幕区一区有砖一区 | 播五月开心婷婷综合| 国产精品 欧美精品| 国产成人精品亚洲日本在线桃色 | 香港成人在线视频| 亚洲欧洲国产专区| 综合激情成人伊人| 亚洲色图19p| 亚洲欧美日韩综合aⅴ视频| 亚洲理论在线观看| 亚洲国产欧美在线人成| 亚洲国产欧美日韩另类综合 | 成人福利视频网站| av午夜精品一区二区三区| 色屁屁一区二区| av电影天堂一区二区在线| 91视频一区二区三区| 一本色道亚洲精品aⅴ| 欧美婷婷六月丁香综合色| 欧美日韩免费观看一区三区| 欧美丰满少妇xxxbbb| 欧美一区二区三区视频在线观看| 日韩欧美国产综合在线一区二区三区| 91精品黄色片免费大全| 欧美一级二级在线观看| 久久一夜天堂av一区二区三区| 久久毛片高清国产| 欧美国产97人人爽人人喊| 18成人在线视频| 亚洲成人1区2区| 国产精品白丝jk黑袜喷水| 国产一区二区在线观看视频| 一本大道av一区二区在线播放| 欧美日韩三级在线| 亚洲精品一区二区三区蜜桃下载| 国产精品理论在线观看| 亚洲曰韩产成在线| 精品中文av资源站在线观看| 韩国中文字幕2020精品| 成人国产精品免费观看动漫| 色狠狠一区二区| 欧美成人乱码一区二区三区| 自拍偷拍亚洲激情| 久久精品99国产精品日本| av午夜一区麻豆| 欧美v日韩v国产v| 一区二区三区高清在线| 国产一区二区成人久久免费影院| 91蝌蚪porny| 精品欧美乱码久久久久久1区2区 | 极品销魂美女一区二区三区| 99精品热视频| 日韩欧美中文一区| 亚洲精品乱码久久久久久黑人| 精品一区二区三区av| 欧美中文一区二区三区| 精品噜噜噜噜久久久久久久久试看| 亚洲成人动漫在线免费观看| 大白屁股一区二区视频| 欧美精品1区2区3区| 亚洲三级在线免费观看| 国产一区二区三区黄视频| 欧美日韩国产一区| 综合久久国产九一剧情麻豆| 99精品在线免费| 国产视频一区二区在线| 天天影视涩香欲综合网| 91丨九色丨黑人外教| 国产色爱av资源综合区| 蜜臀av一区二区| 欧美在线观看一区| 无吗不卡中文字幕|