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

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

?? mailslot.c

?? winNT技術(shù)操作系統(tǒng),國(guó)外開(kāi)放的原代碼和LIUX一樣
?? C
字號(hào):
/*
 *  Mailslot regression test
 *
 *  Copyright 2003 Mike McCormack
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

#include <stdarg.h>
#include <stdlib.h>
#include <stdio.h>

#include <windef.h>
#include <winbase.h>

#include "wine/test.h"

static const char szmspath[] = "\\\\.\\mailslot\\wine_mailslot_test";

static int mailslot_test(void)
{
    HANDLE hSlot, hSlot2, hWriter, hWriter2;
    unsigned char buffer[16];
    DWORD count, dwMax, dwNext, dwMsgCount, dwTimeout;

    /* sanity check on GetMailslotInfo */
    dwMax = dwNext = dwMsgCount = dwTimeout = 0;
    ok( !GetMailslotInfo( INVALID_HANDLE_VALUE, &dwMax, &dwNext,
            &dwMsgCount, &dwTimeout ), "getmailslotinfo succeeded\n");

    /* open a mailslot that doesn't exist */
    hWriter = CreateFile(szmspath, GENERIC_READ|GENERIC_WRITE,
                             FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
    ok( hWriter == INVALID_HANDLE_VALUE, "nonexistent mailslot\n");

    /* open a mailslot without the right name */
    hSlot = CreateMailslot( "blah", 0, 0, NULL );
    ok( hSlot == INVALID_HANDLE_VALUE,
            "Created mailslot with invalid name\n");
    ok( GetLastError() == ERROR_INVALID_NAME,
            "error should be ERROR_INVALID_NAME\n");

    /* open a mailslot with a null name */
    hSlot = CreateMailslot( NULL, 0, 0, NULL );
    ok( hSlot == INVALID_HANDLE_VALUE,
            "Created mailslot with invalid name\n");
    ok( GetLastError() == ERROR_PATH_NOT_FOUND,
            "error should be ERROR_PATH_NOT_FOUND\n");

    /* valid open, but with wacky parameters ... then check them */
    hSlot = CreateMailslot( szmspath, -1, -1, NULL );
    ok( hSlot != INVALID_HANDLE_VALUE , "mailslot with valid name failed\n");
    dwMax = dwNext = dwMsgCount = dwTimeout = 0;
    ok( GetMailslotInfo( hSlot, &dwMax, &dwNext, &dwMsgCount, &dwTimeout ),
           "getmailslotinfo failed\n");
    ok( dwMax == ~0UL, "dwMax incorrect\n");
    ok( dwNext == MAILSLOT_NO_MESSAGE, "dwNext incorrect\n");
    ok( dwMsgCount == 0, "dwMsgCount incorrect\n");
    ok( dwTimeout == ~0UL, "dwTimeout incorrect\n");
    ok( GetMailslotInfo( hSlot, NULL, NULL, NULL, NULL ),
            "getmailslotinfo failed\n");
    ok( CloseHandle(hSlot), "failed to close mailslot\n");

    /* now open it for real */
    hSlot = CreateMailslot( szmspath, 0, 0, NULL );
    ok( hSlot != INVALID_HANDLE_VALUE , "valid mailslot failed\n");

    /* try and read/write to it */
    count = 0;
    memset(buffer, 0, sizeof buffer);
    ok( !ReadFile( hSlot, buffer, sizeof buffer, &count, NULL),
            "slot read\n");
    ok( !WriteFile( hSlot, buffer, sizeof buffer, &count, NULL),
            "slot write\n");

    /* now try and openthe client, but with the wrong sharing mode */
    hWriter = CreateFile(szmspath, GENERIC_READ|GENERIC_WRITE,
                             0, NULL, OPEN_EXISTING, 0, NULL);
    ok( hWriter == INVALID_HANDLE_VALUE, "bad sharing mode\n");
    ok( GetLastError() == ERROR_SHARING_VIOLATION,
            "error should be ERROR_SHARING_VIOLATION\n");

    /* now open the client with the correct sharing mode */
    hWriter = CreateFile(szmspath, GENERIC_READ|GENERIC_WRITE,
                             FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
    ok( hWriter != INVALID_HANDLE_VALUE, "existing mailslot\n");

    /*
     * opening a client should make no difference to
     * whether we can read or write the mailslot
     */
    ok( !ReadFile( hSlot, buffer, sizeof buffer/2, &count, NULL),
            "slot read\n");
    ok( !WriteFile( hSlot, buffer, sizeof buffer/2, &count, NULL),
            "slot write\n");

    /*
     * we can't read from this client, 
     * but we should be able to write to it
     */
    ok( !ReadFile( hWriter, buffer, sizeof buffer/2, &count, NULL),
            "can read client\n");
    ok( WriteFile( hWriter, buffer, sizeof buffer/2, &count, NULL),
            "can't write client\n");
    ok( !ReadFile( hWriter, buffer, sizeof buffer/2, &count, NULL),
            "can read client\n");

    /*
     * seeing as there's something in the slot,
     * we should be able to read it once
     */
    ok( ReadFile( hSlot, buffer, sizeof buffer, &count, NULL),
            "slot read\n");
    ok( count == (sizeof buffer/2), "short read\n" );

    /* but not again */
    ok( !ReadFile( hSlot, buffer, sizeof buffer, &count, NULL),
            "slot read\n");

    /* now try open another writer... should fail */
    hWriter2 = CreateFile(szmspath, GENERIC_READ|GENERIC_WRITE,
                     FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
    ok( hWriter2 == INVALID_HANDLE_VALUE, "two writers\n");

    /* now try open another as a reader ... also fails */
    hWriter2 = CreateFile(szmspath, GENERIC_READ,
                     FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
    ok( hWriter2 == INVALID_HANDLE_VALUE, "writer + reader\n");

    /* now try open another as a writer ... still fails */
    hWriter2 = CreateFile(szmspath, GENERIC_WRITE,
                     FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
    ok( hWriter2 == INVALID_HANDLE_VALUE, "writer\n");

    /* now open another one */
    hSlot2 = CreateMailslot( szmspath, 0, 0, NULL );
    ok( hSlot2 == INVALID_HANDLE_VALUE , "opened two mailslots\n");

    /* close the client again */
    ok( CloseHandle( hWriter ), "closing the client\n");

    /*
     * now try reopen it with slightly different permissions ...
     * shared writing
     */
    hWriter = CreateFile(szmspath, GENERIC_WRITE,
              FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
    ok( hWriter != INVALID_HANDLE_VALUE, "sharing writer\n");

    /*
     * now try open another as a writer ...
     * but don't share with the first ... fail
     */
    hWriter2 = CreateFile(szmspath, GENERIC_WRITE,
                     FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
    ok( hWriter2 == INVALID_HANDLE_VALUE, "greedy writer succeeded\n");

    /* now try open another as a writer ... and share with the first */
    hWriter2 = CreateFile(szmspath, GENERIC_WRITE,
              FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
    ok( hWriter2 != INVALID_HANDLE_VALUE, "2nd sharing writer\n");

    /* check the mailslot info */
    dwMax = dwNext = dwMsgCount = dwTimeout = 0;
    ok( GetMailslotInfo( hSlot, &dwMax, &dwNext, &dwMsgCount, &dwTimeout ),
        "getmailslotinfo failed\n");
    ok( dwNext == MAILSLOT_NO_MESSAGE, "dwNext incorrect\n");
    ok( dwMax == 0, "dwMax incorrect\n");
    ok( dwMsgCount == 0, "dwMsgCount incorrect\n");
    ok( dwTimeout == 0, "dwTimeout incorrect\n");

    /* check there's still no data */
    ok( !ReadFile( hSlot, buffer, sizeof buffer, &count, NULL), "slot read\n");

    /* write two messages */
    buffer[0] = 'a';
    ok( WriteFile( hWriter, buffer, 1, &count, NULL), "1st write failed\n");

    /* check the mailslot info */
    dwNext = dwMsgCount = 0;
    ok( GetMailslotInfo( hSlot, NULL, &dwNext, &dwMsgCount, NULL ),
        "getmailslotinfo failed\n");
    ok( dwNext == 1, "dwNext incorrect\n");
    ok( dwMsgCount == 1, "dwMsgCount incorrect\n");

    buffer[0] = 'b';
    buffer[1] = 'c';
    ok( WriteFile( hWriter2, buffer, 2, &count, NULL), "2nd write failed\n");

    /* check the mailslot info */
    dwNext = dwMsgCount = 0;
    ok( GetMailslotInfo( hSlot, NULL, &dwNext, &dwMsgCount, NULL ),
        "getmailslotinfo failed\n");
    ok( dwNext == 1, "dwNext incorrect\n");
    todo_wine {
    ok( dwMsgCount == 2, "dwMsgCount incorrect\n");
    }

    /* write a 3rd message with zero size */
    ok( WriteFile( hWriter2, buffer, 0, &count, NULL), "3rd write failed\n");

    /* check the mailslot info */
    dwNext = dwMsgCount = 0;
    ok( GetMailslotInfo( hSlot, NULL, &dwNext, &dwMsgCount, NULL ),
        "getmailslotinfo failed\n");
    ok( dwNext == 1, "dwNext incorrect\n");
    todo_wine {
    ok( dwMsgCount == 3, "dwMsgCount incorrect\n");
    }

    buffer[0]=buffer[1]=0;

    /*
     * then check that they come out with the correct order and size,
     * then the slot is empty
     */
    ok( ReadFile( hSlot, buffer, sizeof buffer, &count, NULL),
        "1st slot read failed\n");
    ok( count == 1, "failed to get 1st message\n");
    ok( buffer[0] == 'a', "1st message wrong\n");

    /* check the mailslot info */
    dwNext = dwMsgCount = 0;
    ok( GetMailslotInfo( hSlot, NULL, &dwNext, &dwMsgCount, NULL ),
        "getmailslotinfo failed\n");
    ok( dwNext == 2, "dwNext incorrect\n");
    todo_wine {
    ok( dwMsgCount == 2, "dwMsgCount incorrect\n");
    }

    /* read the second message */
    ok( ReadFile( hSlot, buffer, sizeof buffer, &count, NULL),
        "2nd slot read failed\n");
    ok( count == 2, "failed to get 2nd message\n");
    ok( ( buffer[0] == 'b' ) && ( buffer[1] == 'c' ), "2nd message wrong\n");

    /* check the mailslot info */
    dwNext = dwMsgCount = 0;
    ok( GetMailslotInfo( hSlot, NULL, &dwNext, &dwMsgCount, NULL ),
        "getmailslotinfo failed\n");
    todo_wine {
    ok( dwNext == 0, "dwNext incorrect\n");
    ok( dwMsgCount == 1, "dwMsgCount incorrect\n");
    }

    /* read the 3rd (zero length) message */
    todo_wine {
    ok( ReadFile( hSlot, buffer, sizeof buffer, &count, NULL),
        "3rd slot read failed\n");
    }
    ok( count == 0, "failed to get 3rd message\n");

    /*
     * now there should be no more messages
     * check the mailslot info
     */
    dwNext = dwMsgCount = 0;
    ok( GetMailslotInfo( hSlot, NULL, &dwNext, &dwMsgCount, NULL ),
        "getmailslotinfo failed\n");
    ok( dwNext == MAILSLOT_NO_MESSAGE, "dwNext incorrect\n");
    ok( dwMsgCount == 0, "dwMsgCount incorrect\n");

    /* check that reads fail */
    ok( !ReadFile( hSlot, buffer, sizeof buffer, &count, NULL),
        "3rd slot read succeeded\n");

    /* finally close the mailslot and its client */
    ok( CloseHandle( hWriter2 ), "closing 2nd client\n");
    ok( CloseHandle( hWriter ), "closing the client\n");
    ok( CloseHandle( hSlot ), "closing the mailslot\n");

    return 0;
}

START_TEST(mailslot)
{
    mailslot_test();
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜桃久久久久久| 韩国精品一区二区| 亚洲精品一区二区三区四区高清| 国产精品一区专区| 一区二区三区日韩精品视频| 2020国产精品自拍| 欧美日韩视频一区二区| 成人蜜臀av电影| 美女看a上一区| 一区二区在线观看av| 国产日韩成人精品| 精品久久久久久无| 欧美日韩中文字幕一区| 99久久精品一区二区| 韩国一区二区三区| 日本不卡不码高清免费观看| 亚洲女与黑人做爰| 国产精品欧美极品| 亚洲精品一区二区三区在线观看| 在线播放亚洲一区| 在线观看不卡视频| 91色九色蝌蚪| av电影天堂一区二区在线观看| 久久精品72免费观看| 香蕉久久夜色精品国产使用方法 | 亚洲国产精品久久人人爱| 中文字幕免费一区| 久久综合网色—综合色88| 91麻豆精品国产91久久久| 91久久一区二区| jizzjizzjizz欧美| 国产不卡视频一区二区三区| 美女一区二区三区在线观看| 五月天激情综合| 亚洲自拍偷拍综合| 亚洲精品福利视频网站| 亚洲精品你懂的| 亚洲精品自拍动漫在线| 一区在线观看免费| 中文字幕制服丝袜一区二区三区 | 亚洲国产另类精品专区| 亚洲欧洲精品一区二区三区| 国产精品久久久久久一区二区三区| 亚洲精品一区二区精华| 久久久久久久国产精品影院| 精品少妇一区二区三区视频免付费| 91精品久久久久久久99蜜桃| 欧美精品三级日韩久久| 欧美精品123区| 欧美一卡二卡三卡| 精品蜜桃在线看| 久久久久久久久久电影| 国产精品日韩成人| 亚洲天堂2016| 亚洲美女偷拍久久| 亚洲高清在线精品| 日本在线不卡一区| 国产一区二区三区四区五区入口 | 亚洲成人免费在线| 日本特黄久久久高潮| 美女任你摸久久| 国产一区二区三区在线观看免费视频| 国产福利一区二区| 91在线视频网址| 欧美日韩三级视频| 欧美电影精品一区二区| 亚洲国产高清aⅴ视频| 亚洲精品乱码久久久久久日本蜜臀| 亚洲精品日日夜夜| 日本美女一区二区| 成熟亚洲日本毛茸茸凸凹| 在线欧美日韩精品| 欧美大度的电影原声| 国产人成一区二区三区影院| 亚洲精品大片www| 久久精品99国产精品| 成人黄色av网站在线| 欧美在线观看你懂的| 2022国产精品视频| 亚洲午夜av在线| 国产一本一道久久香蕉| 99免费精品在线观看| 91麻豆精品国产91久久久更新时间| 国产亚洲污的网站| 亚洲成av人片一区二区| 国产盗摄一区二区三区| 精品污污网站免费看| 日本一区二区免费在线观看视频| 一区二区三区中文字幕精品精品| 秋霞成人午夜伦在线观看| 国产成人在线视频网址| 欧美绝品在线观看成人午夜影视| 国产亚洲成年网址在线观看| 一区2区3区在线看| 国产成人在线电影| 欧美日韩1234| 国产精品色一区二区三区| 日日夜夜免费精品视频| 91免费在线视频观看| 26uuu色噜噜精品一区二区| 一区二区三区国产| 国产精品18久久久久| 欧美日韩国产a| 国产精品成人免费在线| 精品系列免费在线观看| 欧美性生活大片视频| 国产精品久久久久久一区二区三区| 青青草国产精品97视觉盛宴 | 欧美tickle裸体挠脚心vk| 亚洲精品乱码久久久久| 国产成人亚洲精品青草天美 | 久久久久久免费网| 美国欧美日韩国产在线播放| 91丝袜国产在线播放| 久久久影视传媒| 久久精品国产一区二区| 制服丝袜中文字幕亚洲| 一区二区不卡在线播放 | 国产成a人亚洲| 日韩一区二区精品| 日韩va欧美va亚洲va久久| 色婷婷综合视频在线观看| 中文字幕中文字幕在线一区| 国产乱码字幕精品高清av | 99re66热这里只有精品3直播| 久久日一线二线三线suv| 免费观看一级特黄欧美大片| 欧美日韩精品一区二区三区四区| 亚洲色图色小说| www.欧美.com| 国产欧美一区二区精品性色超碰| 精品亚洲国内自在自线福利| 日韩欧美三级在线| 奇米四色…亚洲| 欧美高清激情brazzers| 日韩精品亚洲专区| 欧美日韩国产色站一区二区三区| 一二三四社区欧美黄| 色综合一个色综合亚洲| 亚洲品质自拍视频| 91福利在线看| 亚洲一级二级三级在线免费观看| 色哟哟一区二区在线观看| 亚洲另类春色校园小说| 一本大道av一区二区在线播放| 亚洲精品中文在线观看| 91精品91久久久中77777| 一区二区在线观看av| 欧美中文一区二区三区| 亚洲午夜激情网站| 欧美日韩国产一区| 美国十次综合导航| 日韩欧美国产电影| 久久成人免费电影| 国产视频一区二区在线| 波多野结衣中文字幕一区| 亚洲免费av高清| 欧美日韩精品一区二区三区| 奇米影视一区二区三区| 久久精品免费在线观看| 色综合天天狠狠| 亚洲小说欧美激情另类| 在线综合视频播放| 国产一区二区三区| 亚洲精品国产成人久久av盗摄| 欧美性视频一区二区三区| 青青草原综合久久大伊人精品| 久久久久国产精品人| 91在线丨porny丨国产| 青草av.久久免费一区| 欧美va亚洲va国产综合| 99亚偷拍自图区亚洲| 亚洲国产一区二区视频| 精品国产亚洲在线| 不卡一卡二卡三乱码免费网站| 亚洲综合一区在线| 精品久久人人做人人爰| proumb性欧美在线观看| 亚洲午夜在线视频| 2020国产精品久久精品美国| 色综合视频在线观看| 久久精品噜噜噜成人av农村| 国产精品久久久久久久久果冻传媒| 欧美日韩卡一卡二| 豆国产96在线|亚洲| 五月天网站亚洲| 欧美激情在线一区二区三区| 欧美日韩高清一区二区不卡 | 欧美视频日韩视频| 国产麻豆91精品| 亚洲一二三专区| 国产午夜精品理论片a级大结局| 色婷婷综合久久久久中文一区二区 | 日韩在线观看一区二区| 国产欧美日韩亚州综合| 欧美日韩另类国产亚洲欧美一级| 国产激情视频一区二区三区欧美| 丝袜美腿亚洲一区二区图片| 国产精品久久久久久久久免费相片| 91精品午夜视频|