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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? osfinfo.c

?? C標(biāo)準(zhǔn)庫(kù)源代碼,能提高對(duì)C的理解,不錯(cuò)的哦
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/***
*osfinfo.c - Win32 _osfhnd[] support routines
*
*       Copyright (c) 1990-1997, Microsoft Corporation. All rights reserved.
*
*Purpose:
*       Defines the internally used routine _alloc_osfhnd()
*       and the user visible routine _get_osfhandle().
*
*******************************************************************************/

#ifndef _MAC


#include <cruntime.h>
#include <oscalls.h>
#include <errno.h>
#include <internal.h>
#include <fcntl.h>
#include <malloc.h>
#include <msdos.h>
#include <mtdll.h>
#include <stdlib.h>
#include <dbgint.h>


/***
*int _alloc_osfhnd() - get free _ioinfo struct
*
*Purpose:
*       Finds the first free entry in the arrays of ioinfo structs and
*       returns the index of that entry (which is the CRT file handle to the
*       caller) to the caller.
*
*Entry:
*       none
*
*Exit:
*       returns index of the entry, if successful
*       return -1, if no free entry is available
*
*       MULTITHREAD NOTE: IF SUCCESSFUL, THE HANDLE IS LOCKED WHEN IT IS
*       RETURNED TO THE CALLER!
*
*Exceptions:
*
*******************************************************************************/

int __cdecl _alloc_osfhnd(
        void
        )
{
        int fh = -1;    /* file handle */
        int i;
        ioinfo *pio;

        _mlock(_OSFHND_LOCK);   /* lock the __pioinfo[] array */

        /*
         * Search the arrays of ioinfo structs, in order, looking for the
         * first free entry. The compound index of this free entry is the
         * return value. Here, the compound index of the ioinfo struct
         * *(__pioinfo[i] + j) is k = i * IOINFO_ARRAY_ELTS + j, and k = 0,
         * 1, 2,... is the order of the search.
         */
        for ( i = 0 ; i < IOINFO_ARRAYS ; i++ ) {
            /*
             * If __pioinfo[i] is non-empty array, search it looking for
             * the first free entry. Otherwise, allocate a new array and use
             * its first entry.
             */
            if ( __pioinfo[i] != NULL ) {
                /*
                 * Search for an available entry.
                 */
                for ( pio = __pioinfo[i] ;
                      pio < __pioinfo[i] + IOINFO_ARRAY_ELTS ;
                      pio++ )
                {
                    if ( (pio->osfile & FOPEN) == 0 ) {
#ifdef _MT
                        /*
                         * Make sure the lock is initialized.
                         */
                        if ( pio->lockinitflag == 0 ) {
                            _mlock( _LOCKTAB_LOCK );
                            if ( pio->lockinitflag == 0 ) {
                                InitializeCriticalSection( &(pio->lock) );
                                pio->lockinitflag++;
                            }
                            _munlock( _LOCKTAB_LOCK );
                        }

                        EnterCriticalSection( &(pio->lock) );

                        /*
                         * Check for the case where another thread has
                         * managed to grab the handle out from under us.
                         */
                        if ( (pio->osfile & FOPEN) != 0 ) {
                            LeaveCriticalSection( &(pio->lock) );
                            continue;
                        }
#endif  /* _MT */
                        pio->osfhnd = (long)INVALID_HANDLE_VALUE;
                        fh = i * IOINFO_ARRAY_ELTS + (pio - __pioinfo[i]);
                        break;
                    }
                }

                /*
                 * Check if a free entry has been found.
                 */
                if ( fh != -1 )
                    break;
            }
            else {
            /*
             * Allocate and initialize another array of ioinfo structs.
             */
            if ( (pio = _malloc_crt( IOINFO_ARRAY_ELTS * sizeof(ioinfo) ))
                != NULL )
            {

                /*
                 * Update __pioinfo[] and _nhandle
                 */
                __pioinfo[i] = pio;
                _nhandle += IOINFO_ARRAY_ELTS;

                for ( ; pio < __pioinfo[i] + IOINFO_ARRAY_ELTS ; pio++ ) {
                    pio->osfile = 0;
                    pio->osfhnd = (long)INVALID_HANDLE_VALUE;
                    pio->pipech = 10;
#ifdef _MT
                    pio->lockinitflag = 0;
#endif  /* _MT */
                }

                /*
                 * The first element of the newly allocated array of ioinfo
                 * structs, *(__pioinfo[i]), is our first free entry.
                 */
                fh = i * IOINFO_ARRAY_ELTS;
#ifdef _MT
                    _lock_fhandle( fh );
#endif  /* _MT */
            }

            break;
            }
        }

        _munlock(_OSFHND_LOCK); /* unlock the __pioinfo[] table */


        /*
         * return the index of the previously free table entry, if one was
         * found. return -1 otherwise.
         */
        return( fh );
}


/***
*int _set_osfhnd(int fh, long value) - set Win32 HANDLE value
*
*Purpose:
*       If fh is in range and if _osfhnd(fh) is marked with
*       INVALID_HANDLE_VALUE then set _osfhnd(fh) to the passed value.
*
*Entry:
*       int fh      - CRT file handle
*       long value  - new Win32 HANDLE value for this handle
*
*Exit:
*       Returns zero if successful.
*       Returns -1 and sets errno to EBADF otherwise.
*
*Exceptions:
*
*******************************************************************************/

int __cdecl _set_osfhnd (
        int fh,
        long value
        )
{
        if ( ((unsigned)fh < (unsigned)_nhandle) &&
             (_osfhnd(fh) == (long)INVALID_HANDLE_VALUE)
           ) {
            if ( __app_type == _CONSOLE_APP ) {
                switch (fh) {
                case 0:
                    SetStdHandle( STD_INPUT_HANDLE, (HANDLE)value );
                    break;
                case 1:
                    SetStdHandle( STD_OUTPUT_HANDLE, (HANDLE)value );
                    break;
                case 2:
                    SetStdHandle( STD_ERROR_HANDLE, (HANDLE)value );
                    break;
                }
            }

            _osfhnd(fh) = value;
            return(0);
        } else {
            errno = EBADF;      /* bad handle */
            _doserrno = 0L;     /* not an OS error */
            return -1;
        }
}


/***
*int _free_osfhnd(int fh) - mark osfhnd field of ioinfo struct as free
*
*Purpose:
*       If fh is in range, the corrsponding ioinfo struct is marked as
*       being open, and the osfhnd field is NOT set to INVALID_HANDLE_VALUE,
*       then mark it with INVALID_HANDLE_VALUE.
*
*Entry:
*       int fh -    CRT file handle
*
*Exit:
*       Returns zero if successful.
*       Returns -1 and sets errno to EBADF otherwise.
*
*Exceptions:
*
*******************************************************************************/

int __cdecl _free_osfhnd (
        int fh      /* user's file handle */
        )
{
        if ( ((unsigned)fh < (unsigned)_nhandle) &&
             (_osfile(fh) & FOPEN) &&
             (_osfhnd(fh) != (long)INVALID_HANDLE_VALUE) )
        {
            if ( __app_type == _CONSOLE_APP ) {
                switch (fh) {
                case 0:
                    SetStdHandle( STD_INPUT_HANDLE, NULL );
                    break;
                case 1:
                    SetStdHandle( STD_OUTPUT_HANDLE, NULL );
                    break;
                case 2:
                    SetStdHandle( STD_ERROR_HANDLE, NULL );
                    break;
                }
            }

            _osfhnd(fh) = (long)INVALID_HANDLE_VALUE;
            return(0);
        } else {
            errno = EBADF;      /* bad handle */
            _doserrno = 0L;     /* not an OS error */
            return -1;
        }
}


/***
*long _get_osfhandle(int fh) - get Win32 HANDLE value
*
*Purpose:
*       If fh is in range and marked open, return _osfhnd(fh).
*
*Entry:
*       int fh  - CRT file handle
*
*Exit:
*       Returns the Win32 HANDLE successful.
*       Returns -1 and sets errno to EBADF otherwise.
*
*Exceptions:
*
*******************************************************************************/

long __cdecl _get_osfhandle (
        int fh      /* user's file handle */
        )
{
        if ( ((unsigned)fh < (unsigned)_nhandle) && (_osfile(fh) & FOPEN) )
            return( _osfhnd(fh) );
        else {
            errno = EBADF;      /* bad handle */
            _doserrno = 0L;     /* not an OS error */
            return -1;
        }
}

/***
*int _open_osfhandle(long osfhandle, int flags) - open C Runtime file handle
*
*Purpose:
*       This function allocates a free C Runtime file handle and associates
*       it with the Win32 HANDLE specified by the first parameter.
*
*Entry:
*       long osfhandle - Win32 HANDLE to associate with C Runtime file handle.
*       int flags      - flags to associate with C Runtime file handle.
*
*Exit:
*       returns index of entry in fh, if successful
*       return -1, if no free entry is found
*
*Exceptions:
*
*******************************************************************************/

int __cdecl _open_osfhandle(
        long osfhandle,
        int flags
        )
{
        int fh;
        char fileflags;         /* _osfile flags */
        DWORD isdev;            /* device indicator in low byte */

        /* copy relevant flags from second parameter */

        fileflags = 0;

        if ( flags & _O_APPEND )
            fileflags |= FAPPEND;

        if ( flags & _O_TEXT )
            fileflags |= FTEXT;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产做a爰片久久毛片| 97国产一区二区| 亚洲日韩欧美一区二区在线| 欧美系列日韩一区| 狠狠色丁香婷婷综合久久片| 亚洲男人的天堂av| 国产亚洲综合色| 884aa四虎影成人精品一区| av一区二区不卡| 狠狠色狠狠色综合| 无吗不卡中文字幕| 一区二区三区欧美日| 国产拍揄自揄精品视频麻豆| 这里只有精品视频在线观看| 91成人网在线| 色综合视频在线观看| 国产成人精品免费| 激情综合色播五月| 日韩国产欧美一区二区三区| 亚洲综合在线视频| 中文字幕亚洲精品在线观看| 久久精品人人做| 日韩午夜在线播放| 欧美电影在线免费观看| 色综合天天在线| 成人久久久精品乱码一区二区三区| 久久国产麻豆精品| 免费在线观看视频一区| 亚洲电影第三页| 亚洲最新在线观看| 亚洲精品视频在线看| 中文字幕制服丝袜一区二区三区| 久久综合色8888| 精品国产91洋老外米糕| 日韩精品一区二区三区在线观看 | 日韩电影网1区2区| 亚洲激情图片一区| 亚洲精品日韩综合观看成人91| 国产精品美女视频| 中文字幕亚洲视频| 最新欧美精品一区二区三区| 国产精品美女久久久久久| 国产精品日日摸夜夜摸av| 久久久精品免费观看| 久久久久久免费网| 欧美电影免费观看高清完整版| 日韩欧美一区二区三区在线| 日韩久久久久久| 26uuu国产日韩综合| 国产欧美综合在线| 国产精品嫩草影院av蜜臀| 国产精品不卡在线| 一区二区三区欧美日| 亚洲午夜久久久久久久久电影网| 亚洲国产另类精品专区| 蜜臀久久久久久久| 国产一区二区三区四区五区入口 | 日韩av二区在线播放| 欧美96一区二区免费视频| 久久国产精品72免费观看| 国产成人小视频| 色综合久久久网| 7878成人国产在线观看| 久久综合资源网| 亚洲欧美综合另类在线卡通| 亚洲成人激情综合网| 久久99深爱久久99精品| 波多野洁衣一区| 欧美剧情片在线观看| 精品国产91乱码一区二区三区| 中文字幕成人在线观看| 亚洲综合免费观看高清在线观看| 日本伊人午夜精品| 成人免费av在线| 欧美午夜精品一区二区蜜桃| 日韩一级片网站| 国产精品剧情在线亚洲| 丝袜美腿高跟呻吟高潮一区| 国产一区二区在线影院| 一本色道综合亚洲| 日韩欧美aaaaaa| 亚洲免费在线播放| 久久99日本精品| 日本高清成人免费播放| 欧美精品一区二区三区在线播放| 亚洲免费成人av| 精品一区二区三区在线观看| 在线观看一区二区视频| 久久免费电影网| 亚洲高清免费观看高清完整版在线观看 | 欧美三级中文字幕| 精品成人在线观看| 亚洲综合区在线| 国产91精品一区二区麻豆网站 | 欧美日韩高清一区二区三区| 久久久亚洲高清| 三级久久三级久久| proumb性欧美在线观看| 亚洲精品一区二区在线观看| 亚洲国产精品一区二区久久恐怖片 | 99久久久久免费精品国产 | 亚洲精品中文在线观看| 国产一区二区三区四区五区入口 | 精品国产乱码久久| 亚洲一区在线看| 成人深夜视频在线观看| 日韩欧美另类在线| 亚洲成人动漫一区| 99精品欧美一区二区蜜桃免费| 亚洲精品一区二区三区福利| 视频一区国产视频| 色婷婷久久综合| 国产精品天干天干在线综合| 久久99精品一区二区三区三区| 欧美性受xxxx| 国产精品成人免费在线| 国产精品一区不卡| 欧美大黄免费观看| 日本午夜精品一区二区三区电影| 在线观看一区不卡| 亚洲日本电影在线| 91蜜桃传媒精品久久久一区二区| 国产欧美一区二区三区鸳鸯浴 | 欧美色倩网站大全免费| 亚洲精品一二三| 色综合久久99| 亚洲人123区| 91猫先生在线| 亚洲色图欧美在线| 91视频观看免费| 最近日韩中文字幕| 91免费看`日韩一区二区| 亚洲人被黑人高潮完整版| 99在线精品视频| 国产精品福利影院| 99热这里都是精品| 亚洲免费观看高清完整版在线观看| 97aⅴ精品视频一二三区| 国产精品久久久久aaaa樱花| 成人禁用看黄a在线| 亚洲欧洲无码一区二区三区| 91亚洲精品久久久蜜桃网站| 亚洲欧美日韩久久| 91国产福利在线| 日韩精品亚洲一区二区三区免费| 欧美精品久久一区二区三区| 免费看日韩a级影片| 精品欧美黑人一区二区三区| 国产精品亚洲视频| 国产无一区二区| 豆国产96在线|亚洲| 亚洲黄色av一区| 欧美亚一区二区| 美女免费视频一区| 国产欧美一区二区精品仙草咪| 成人a区在线观看| 亚洲精品视频自拍| 欧美一区二区免费| 国产精品亚洲人在线观看| 国产精品亲子伦对白| 91成人看片片| 免费精品99久久国产综合精品| 久久久久久99久久久精品网站| av一区二区三区在线| 亚洲一二三区视频在线观看| 日韩欧美亚洲另类制服综合在线| 国产成人免费9x9x人网站视频| 亚洲情趣在线观看| 日韩一区二区三区高清免费看看| 国产98色在线|日韩| 亚洲一区二区精品久久av| 欧美不卡激情三级在线观看| 成人免费毛片高清视频| 天堂蜜桃91精品| 国产片一区二区| 欧美老年两性高潮| 粉嫩在线一区二区三区视频| 亚洲一二三四区| 久久夜色精品一区| 色婷婷激情一区二区三区| 精品一区二区影视| 亚洲自拍偷拍麻豆| 久久久久久亚洲综合影院红桃| 欧美在线一二三四区| 国产麻豆精品在线| 亚洲在线视频一区| 国产丝袜欧美中文另类| 欧美日韩中文字幕一区二区| 国产美女主播视频一区| 亚洲国产精品久久久久婷婷884| xvideos.蜜桃一区二区| 欧美日韩综合不卡| 成人午夜激情视频| 看片网站欧美日韩| 亚洲影视资源网| 国产精品福利av| 久久久久一区二区三区四区| 欧美日本在线视频| 日本高清无吗v一区| 成人理论电影网|