青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

aurain
技術(shù)文摘
posts - 137,  comments - 268,  trackbacks - 0

IRP中I/O堆棧Parameters.Create參數(shù)
在IO_STACK_LOCATION結(jié)構(gòu)體中,Parameters這個(gè)union其中有個(gè)Create結(jié)構(gòu)體,對應(yīng)IRP_MJ_CREATE,此IRP的分發(fā)函數(shù)處理應(yīng)用層的CreateFile函數(shù),
CreateFile函數(shù)進(jìn)入內(nèi)核后是調(diào)用NtCreateFile,NtCreateFile的聲明同ZwCreatFile
在ZwCreateFile中設(shè)置的一些參數(shù),在Parameters.Create中可以獲取到。
下面先看CreateFile及ZwCreateFile原型:
HANDLE WINAPI CreateFile(
  __in          LPCTSTR lpFileName,
  __in          DWORD dwDesiredAccess,
  __in          DWORD dwShareMode,
  __in          LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  __in          DWORD dwCreationDisposition,
  __in          DWORD dwFlagsAndAttributes,
  __in          HANDLE hTemplateFile
);

NTSTATUS 
  ZwCreateFile(
    OUT PHANDLE  FileHandle,
    IN ACCESS_MASK  DesiredAccess,
    IN POBJECT_ATTRIBUTES  ObjectAttributes,
    OUT PIO_STATUS_BLOCK  IoStatusBlock,
    IN PLARGE_INTEGER  AllocationSize  OPTIONAL,
    IN ULONG  FileAttributes,
    IN ULONG  ShareAccess,
    IN ULONG  CreateDisposition,
    IN ULONG  CreateOptions,
    IN PVOID  EaBuffer  OPTIONAL,
    IN ULONG  EaLength
    );

再看Parameters.Create結(jié)構(gòu)體:
 struct {
            PIO_SECURITY_CONTEXT SecurityContext;
            ULONG Options;
            USHORT POINTER_ALIGNMENT FileAttributes;
            USHORT ShareAccess;
            ULONG POINTER_ALIGNMENT EaLength;
        } Create;

在Parameters.Create的Options域中,高8位對應(yīng)ZwCreateFile的dwCreationDisposition,低24位對應(yīng)ZwCreateFile的CreateOptions,
ShareAccess對應(yīng)ZwCreateFile的ShareAccess,FileAttributes對應(yīng)ZwCreateFile的FileAttributes,SecurityContext->DesiredAccess對應(yīng)
ZwCreateFile的DesiredAccess。

CreationDisposition = (Parameters.Create.Options >> 24) & 0x000000ff;
CreateOptions = Parameters.Create.Options & 0x00ffffff;
DesiredAccess = Parameters.Create.SecurityContext->DesiredAccess;
ShareAccess = Parameters.Create.ShareAccess;
FileAttributes = Parameters.Create.FileAttributes;

DesiredAccess----這個(gè)參數(shù)指定一個(gè)訪問權(quán)限,大概有以下的權(quán)限:
FILE_ANY_ACCESS 0x0000 // any type
FILE_READ_ACCESS 0x0001 // file & pipe
FILE_READ_DATA 0x0001 // file & pipe
FILE_LIST_DIRECTORY 0x0001 // directory
FILE_WRITE_ACCESS 0x0002 // file & pipe
FILE_WRITE_DATA 0x0002 // file & pipe
FILE_ADD_FILE 0x0002 // directory
FILE_APPEND_DATA 0x0004 // file
FILE_ADD_SUBDIRECTORY 0x0004 // directory
FILE_CREATE_PIPE_INSTANCE 0x0004 // named pipe
FILE_READ_EA 0x0008 // file & directory
FILE_WRITE_EA 0x0010 // file & directory
FILE_EXECUTE 0x0020 // file
FILE_TRAVERSE 0x0020 // directory
FILE_DELETE_CHILD 0x0040 // directory
FILE_READ_ATTRIBUTES 0x0080 // all types
FILE_WRITE_ATTRIBUTES 0x0100 // all types
FILE_ALL_ACCESS // All of the preceding +
STANDARD_RIGHTS_ALL
最后一個(gè)權(quán)限最大
這里面要注意的是范圍問題,有的值只適合目錄,有的只適合管道,有的只適合命名管道,有的同時(shí)適用,想下這個(gè)地方可以做什么文章

FileAttributes---這個(gè)參數(shù)指定文件的屬性,剛才是文件對象的屬性。可以是以下的:
FILE_ATTRIBUTE_READONLY
FILE_ATTRIBUTE_HIDDEN
FILE_ATTRIBUTE_SYSTEM
FILE_ATTRIBUTE_DIRECTORY
FILE_ATTRIBUTE_ARCHIVE
FILE_ATTRIBUTE_NORMAL
FILE_ATTRIBUTE_TEMPORARY
FILE_ATTRIBUTE_SPARSE_FILE
FILE_ATTRIBUTE_REPARSE_POINT
FILE_ATTRIBUTE_COMPRESSED
FILE_ATTRIBUTE_OFFLINE
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
FILE_ATTRIBUTE_ENCRYPTED

ShareAccess---指定共享的權(quán)限,以下三種的組合:
FILE_SHARE_READ
FILE_SHARE_WRITE
FILE_SHARE_DELETE

CreateDisposition---這個(gè)參數(shù)指定要對文件干嘛,呼呼,可以是下面的值:
FILE_SUPERSEDE
FILE_OPEN
FILE_CREATE
FILE_OPEN_IF
FILE_OVERWRITE
FILE_OVERWRITE_IF


CreateOptions---這個(gè)參數(shù)指定創(chuàng)建或者打開文件的時(shí)候做的一些事情,可以是以下的組合:
FILE_DIRECTORY_FILE
FILE_WRITE_THROUGH
FILE_SEQUENTIAL_ONLY
FILE_NO_INTERMEDIATE_BUFFERING
FILE_SYNCHRONOUS_IO_ALERT
FILE_SYNCHRONOUS_IO_NONALERT
FILE_NON_DIRECTORY_FILE
FILE_CREATE_TREE_CONNECTION
FILE_COMPLETE_IF_OPLOCKED
FILE_NO_EA_KNOWLEDGE
FILE_OPEN_FOR_RECOVERY
FILE_RANDOM_ACCESS
FILE_DELETE_ON_CLOSE
FILE_OPEN_BY_FILE_ID
FILE_OPEN_FOR_BACKUP_INTENT
FILE_NO_COMPRESSION
FILE_RESERVE_OPFILTER
FILE_OPEN_REPARSE_POINT
FILE_OPEN_NO_RECALL
FILE_OPEN_FOR_FREE_SPACE_QUERY

 附:CreateFile實(shí)現(xiàn)
HANDLE WINAPI CreateFileW (LPCWSTR          lpFileName,
00092                 DWORD           dwDesiredAccess,
00093                 DWORD           dwShareMode,
00094                 LPSECURITY_ATTRIBUTES   lpSecurityAttributes,
00095                 DWORD           dwCreationDisposition,
00096                 DWORD           dwFlagsAndAttributes,
00097                 HANDLE          hTemplateFile)
00098 {
00099    OBJECT_ATTRIBUTES ObjectAttributes;
00100    IO_STATUS_BLOCK IoStatusBlock;
00101    UNICODE_STRING NtPathU;
00102    HANDLE FileHandle;
00103    NTSTATUS Status;
00104    ULONG FileAttributes, Flags = 0;
00105    PVOID EaBuffer = NULL;
00106    ULONG EaLength = 0;
00107
00108    if (!lpFileName || !lpFileName[0])
00109    {
00110        SetLastError( ERROR_PATH_NOT_FOUND );
00111        return INVALID_HANDLE_VALUE;
00112    }
00113
00114    TRACE("CreateFileW(lpFileName %S)\n",lpFileName);
00115
00116    /* validate & translate the creation disposition */
00117    switch (dwCreationDisposition)
00118      {
00119       case CREATE_NEW:
00120     dwCreationDisposition = FILE_CREATE;
00121     break;
00122
00123       case CREATE_ALWAYS:
00124     dwCreationDisposition = FILE_OVERWRITE_IF;
00125     break;
00126
00127       case OPEN_EXISTING:
00128     dwCreationDisposition = FILE_OPEN;
00129     break;
00130
00131       case OPEN_ALWAYS:
00132     dwCreationDisposition = FILE_OPEN_IF;
00133     break;
00134
00135       case TRUNCATE_EXISTING:
00136     dwCreationDisposition = FILE_OVERWRITE;
00137         break;
00138
00139       default:
00140         SetLastError(ERROR_INVALID_PARAMETER);
00141         return (INVALID_HANDLE_VALUE);
00142      }
00143
00144    /* check for console input/output */
00145    if (0 == _wcsicmp(L"CONOUT$", lpFileName)
00146        || 0 == _wcsicmp(L"CONIN$", lpFileName))
00147    {
00148       return OpenConsoleW(lpFileName,
00149                           dwDesiredAccess,
00150                           lpSecurityAttributes ? lpSecurityAttributes->bInheritHandle : FALSE,
00151                           FILE_SHARE_READ | FILE_SHARE_WRITE);
00152    }
00153
00154   /* validate & translate the flags */
00155
00156    /* translate the flags that need no validation */
00157    if (!(dwFlagsAndAttributes & FILE_FLAG_OVERLAPPED))
00158    {
00159       /* yes, nonalert is correct! apc's are not delivered
00160       while waiting for file io to complete */
00161       Flags |= FILE_SYNCHRONOUS_IO_NONALERT;
00162    }
00163
00164    if(dwFlagsAndAttributes & FILE_FLAG_WRITE_THROUGH)
00165       Flags |= FILE_WRITE_THROUGH;
00166
00167    if(dwFlagsAndAttributes & FILE_FLAG_NO_BUFFERING)
00168       Flags |= FILE_NO_INTERMEDIATE_BUFFERING;
00169
00170    if(dwFlagsAndAttributes & FILE_FLAG_RANDOM_ACCESS)
00171       Flags |= FILE_RANDOM_ACCESS;
00172
00173    if(dwFlagsAndAttributes & FILE_FLAG_SEQUENTIAL_SCAN)
00174       Flags |= FILE_SEQUENTIAL_ONLY;
00175
00176    if(dwFlagsAndAttributes & FILE_FLAG_DELETE_ON_CLOSE)
00177       Flags |= FILE_DELETE_ON_CLOSE;
00178
00179    if(dwFlagsAndAttributes & FILE_FLAG_BACKUP_SEMANTICS)
00180    {
00181       if(dwDesiredAccess & GENERIC_ALL)
00182          Flags |= FILE_OPEN_FOR_BACKUP_INTENT | FILE_OPEN_REMOTE_INSTANCE;
00183       else
00184       {
00185          if(dwDesiredAccess & GENERIC_READ)
00186             Flags |= FILE_OPEN_FOR_BACKUP_INTENT;
00187
00188          if(dwDesiredAccess & GENERIC_WRITE)
00189             Flags |= FILE_OPEN_REMOTE_INSTANCE;
00190       }
00191    }
00192    else
00193       Flags |= FILE_NON_DIRECTORY_FILE;
00194
00195    if(dwFlagsAndAttributes & FILE_FLAG_OPEN_REPARSE_POINT)
00196       Flags |= FILE_OPEN_REPARSE_POINT;
00197
00198    if(dwFlagsAndAttributes & FILE_FLAG_OPEN_NO_RECALL)
00199       Flags |= FILE_OPEN_NO_RECALL;
00200
00201    FileAttributes = (dwFlagsAndAttributes & (FILE_ATTRIBUTE_VALID_FLAGS & ~FILE_ATTRIBUTE_DIRECTORY));
00202
00203    /* handle may allways be waited on and querying attributes are allways allowed */
00204    dwDesiredAccess |= SYNCHRONIZE | FILE_READ_ATTRIBUTES;
00205
00206    /* FILE_FLAG_POSIX_SEMANTICS is handled later */
00207
00208    /* validate & translate the filename */
00209    if (!RtlDosPathNameToNtPathName_U (lpFileName,
00210                       &NtPathU,
00211                       NULL,
00212                       NULL))
00213    {
00214      WARN("Invalid path\n");
00215      SetLastError(ERROR_FILE_NOT_FOUND);
00216      return INVALID_HANDLE_VALUE;
00217    }
00218
00219    TRACE("NtPathU \'%wZ\'\n", &NtPathU);
00220
00221    if (hTemplateFile != NULL)
00222    {
00223       FILE_EA_INFORMATION EaInformation;
00224
00225       for (;;)
00226       {
00227          /* try to get the size of the extended attributes, if we fail just continue
00228             creating the file without copying the attributes! */
00229          Status = NtQueryInformationFile(hTemplateFile,
00230                                          &IoStatusBlock,
00231                                          &EaInformation,
00232                                          sizeof(FILE_EA_INFORMATION),
00233                                          FileEaInformation);
00234          if (NT_SUCCESS(Status) && (EaInformation.EaSize != 0))
00235          {
00236             /* there's extended attributes to read, let's give it a try */
00237             EaBuffer = RtlAllocateHeap(RtlGetProcessHeap(),
00238                                        0,
00239                                        EaInformation.EaSize);
00240             if (EaBuffer == NULL)
00241             {
00242                RtlFreeHeap(RtlGetProcessHeap(),
00243                            0,
00244                            NtPathU.Buffer);
00245
00246                /* the template file handle is valid and has extended attributes,
00247                   however we seem to lack some memory here. We should fail here! */
00248                SetLastError(ERROR_NOT_ENOUGH_MEMORY);
00249                return INVALID_HANDLE_VALUE;
00250             }
00251
00252             Status = NtQueryEaFile(hTemplateFile,
00253                                    &IoStatusBlock,
00254                                    EaBuffer,
00255                                    EaInformation.EaSize,
00256                                    FALSE,
00257                                    NULL,
00258                                    0,
00259                                    NULL,
00260                                    TRUE);
00261
00262             if (NT_SUCCESS(Status))
00263             {
00264                /* we successfully read the extended attributes, break the loop
00265                   and continue */
00266                EaLength = EaInformation.EaSize;
00267                break;
00268             }
00269             else
00270             {
00271                RtlFreeHeap(RtlGetProcessHeap(),
00272                            0,
00273                            EaBuffer);
00274                EaBuffer = NULL;
00275
00276                if (Status != STATUS_BUFFER_TOO_SMALL)
00277                {
00278                   /* unless we just allocated not enough memory, break the loop
00279                      and just continue without copying extended attributes */
00280                   break;
00281                }
00282             }
00283          }
00284          else
00285          {
00286             /* we either failed to get the size of the extended attributes or
00287                they're empty, just continue as there's no need to copy
00288                attributes */
00289             break;
00290          }
00291       }
00292    }
00293
00294    /* build the object attributes */
00295    InitializeObjectAttributes(&ObjectAttributes,
00296                               &NtPathU,
00297                               0,
00298                               NULL,
00299                               NULL);
00300
00301    if (lpSecurityAttributes)
00302    {
00303       if(lpSecurityAttributes->bInheritHandle)
00304          ObjectAttributes.Attributes |= OBJ_INHERIT;
00305
00306       ObjectAttributes.SecurityDescriptor = lpSecurityAttributes->lpSecurityDescriptor;
00307    }
00308
00309    if(!(dwFlagsAndAttributes & FILE_FLAG_POSIX_SEMANTICS))
00310     ObjectAttributes.Attributes |= OBJ_CASE_INSENSITIVE;
00311
00312    /* perform the call */
00313    Status = NtCreateFile (&FileHandle,
00314               dwDesiredAccess,
00315               &ObjectAttributes,
00316               &IoStatusBlock,
00317               NULL,
00318               FileAttributes,
00319               dwShareMode,
00320               dwCreationDisposition,
00321               Flags,
00322               EaBuffer,
00323               EaLength);
00324
00325    RtlFreeHeap(RtlGetProcessHeap(),
00326                0,
00327                NtPathU.Buffer);
00328
00329    /* free the extended attributes buffer if allocated */
00330    if (EaBuffer != NULL)
00331    {
00332       RtlFreeHeap(RtlGetProcessHeap(),
00333                   0,
00334                   EaBuffer);
00335    }
00336
00337    /* error */
00338    if (!NT_SUCCESS(Status))
00339    {
00340       /* In the case file creation was rejected due to CREATE_NEW flag
00341        * was specified and file with that name already exists, correct
00342        * last error is ERROR_FILE_EXISTS and not ERROR_ALREADY_EXISTS.
00343        * Note: RtlNtStatusToDosError is not the subject to blame here.
00344        */
00345       if (Status == STATUS_OBJECT_NAME_COLLISION &&
00346           dwCreationDisposition == FILE_CREATE)
00347       {
00348          SetLastError( ERROR_FILE_EXISTS );
00349       }
00350       else
00351       {
00352          BaseSetLastNTError (Status);
00353       }
00354
00355       return INVALID_HANDLE_VALUE;
00356    }
00357
00358   /*
00359   create with OPEN_ALWAYS (FILE_OPEN_IF) returns info = FILE_OPENED or FILE_CREATED
00360   create with CREATE_ALWAYS (FILE_OVERWRITE_IF) returns info = FILE_OVERWRITTEN or FILE_CREATED
00361   */
00362   if (dwCreationDisposition == FILE_OPEN_IF)
00363   {
00364     SetLastError(IoStatusBlock.Information == FILE_OPENED ? ERROR_ALREADY_EXISTS : 0);
00365   }
00366   else if (dwCreationDisposition == FILE_OVERWRITE_IF)
00367   {
00368     SetLastError(IoStatusBlock.Information == FILE_OVERWRITTEN ? ERROR_ALREADY_EXISTS : 0);
00369   }
00370
00371   return FileHandle;
00372 }

posted on 2011-09-01 15:27 閱讀(3732) 評論(0)  編輯 收藏 引用 所屬分類: windows驅(qū)動(dòng)

<2011年9月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

常用鏈接

留言簿(17)

隨筆分類(138)

隨筆檔案(137)

網(wǎng)絡(luò)開發(fā)

最新隨筆

搜索

  •  

積分與排名

  • 積分 - 501695
  • 排名 - 37

最新隨筆

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            中日韩高清电影网| 欧美一级黄色录像| 欧美亚洲综合网| 这里只有视频精品| 亚洲美女中出| 亚洲特级毛片| 欧美亚洲免费电影| 性欧美在线看片a免费观看| 亚洲视屏在线播放| 欧美自拍偷拍| 欧美xxxx在线观看| 亚洲乱亚洲高清| 国产精品99久久久久久有的能看| 亚洲男人的天堂在线aⅴ视频| 欧美一区二区三区四区在线| 久久九九热re6这里有精品| 欧美77777| 欧美人与禽猛交乱配视频| 国产精品视频专区| 在线播放日韩专区| 亚洲视频在线观看网站| 老司机精品导航| 日韩午夜电影在线观看| 欧美一区二区三区的| 欧美jizz19hd性欧美| 国产精品推荐精品| 亚洲精品日韩综合观看成人91| 午夜天堂精品久久久久| 久久只有精品| 一区二区高清视频在线观看| 欧美一区二区高清| 嫩草成人www欧美| 亚洲一区二区三区四区五区午夜| 亚洲女爱视频在线| 欧美freesex交免费视频| 一区二区电影免费观看| 久久国产精品电影| 欧美性大战久久久久久久蜜臀| 黄色国产精品| 亚洲欧美综合一区| 亚洲精品你懂的| 午夜宅男欧美| 欧美性久久久| 99re在线精品| 欧美激情中文字幕乱码免费| 欧美亚洲视频在线观看| 欧美午夜精品| 久久久人成影片一区二区三区| 一本色道久久综合亚洲精品高清 | 一区二区三区高清在线| 久久久久九九九| 亚洲香蕉网站| 国产精品福利网| 国产精品99久久久久久久久| 亚洲国产精品ⅴa在线观看| 久久精品视频免费| 国产亚洲日本欧美韩国| 欧美一级二区| 亚洲欧美精品一区| 国产精品第三页| 亚洲一区二区伦理| 在线亚洲观看| 国产精品高潮呻吟久久av黑人| 欧美日韩中文字幕在线| 狠狠入ady亚洲精品经典电影| 亚洲午夜91| 99精品国产99久久久久久福利| 免费不卡视频| 最近中文字幕日韩精品 | 99国产麻豆精品| 欧美激情日韩| 欧美国产国产综合| 一区二区不卡在线视频 午夜欧美不卡在 | 欧美国产精品v| 伊人激情综合| 欧美福利小视频| 欧美国产日韩一区| 亚洲一区二区毛片| 久久精品国亚洲| 91久久精品国产91久久性色| 亚洲人成在线观看网站高清| 欧美日韩第一区日日骚| 亚洲欧美日本精品| 午夜精品久久久久久久白皮肤| 国产精一区二区三区| 久久免费国产精品| 欧美激情aaaa| 欧美一区二区免费| 久久天堂精品| 亚洲性夜色噜噜噜7777| 欧美一级一区| 亚洲精品一区二区三区不| 亚洲伦理在线观看| 国产欧美日韩精品a在线观看| 美国十次了思思久久精品导航| 欧美国产先锋| 欧美在线视屏| 欧美日韩的一区二区| 欧美一区二区高清在线观看| 免费不卡中文字幕视频| 欧美中文在线视频| 欧美黑人多人双交| 久久美女性网| 国产精品每日更新| 亚洲国产一区二区a毛片| 国产美女在线精品免费观看| 亚洲国产专区校园欧美| 国产一区在线看| 亚洲私人影院| 91久久久久| 久久亚洲国产精品一区二区| 欧美一区二区三区电影在线观看| 欧美精品激情在线| 老牛国产精品一区的观看方式| 欧美视频在线观看一区| 亚洲电影av在线| 国产在线国偷精品产拍免费yy| 久热精品在线| 欧美午夜精品理论片a级大开眼界 欧美午夜精品理论片a级按摩 | 91久久精品美女高潮| 午夜精品久久久久久久白皮肤| 亚洲最新合集| 蘑菇福利视频一区播放| 久久久久久久国产| 国产欧美va欧美不卡在线| 日韩视频在线一区二区三区| 亚洲国产精品第一区二区| 亚洲一区二区三区四区中文| 一区二区三区国产在线| 免费的成人av| 美女任你摸久久| 狠狠色2019综合网| 欧美伊人久久久久久久久影院| 先锋影音一区二区三区| 欧美视频中文在线看| 99国内精品久久| 亚洲伊人第一页| 国产精品高潮久久| 亚洲午夜91| 亚欧成人在线| 国产有码一区二区| 久久成人人人人精品欧| 久久视频在线看| 伊人色综合久久天天| 久久久噜噜噜久久中文字免| 美国成人毛片| 亚洲国产午夜| 欧美激情按摩在线| 日韩一级精品| 亚洲免费在线视频| 国产日韩欧美综合精品| 性欧美8khd高清极品| 久久人91精品久久久久久不卡| 一区二区三区在线观看欧美| 蜜桃av久久久亚洲精品| 亚洲日本在线观看| 亚洲视频每日更新| 国产色产综合产在线视频| 久久久在线视频| 亚洲国产三级| 欧美在线免费观看亚洲| 在线欧美一区| 欧美日韩中文另类| 欧美亚洲一区二区三区| 欧美国产免费| 亚洲在线视频一区| 红桃av永久久久| 欧美国产视频在线观看| 亚洲一区二区在| 蜜桃久久av一区| 亚洲私人影院在线观看| 国产欧美精品在线观看| 欧美www视频| 午夜精品福利一区二区三区av| 美女视频一区免费观看| 一本色道久久综合| 一区二区三区在线视频免费观看| 欧美精品久久一区| 久久福利资源站| 亚洲伦理在线| 麻豆国产va免费精品高清在线| 99国产精品私拍| 一本到12不卡视频在线dvd| 欧美成人网在线| 亚洲欧美日韩综合一区| 亚洲国产经典视频| 欧美性片在线观看| 美女福利精品视频| 亚洲欧美一级二级三级| 亚洲国产日韩一区二区| 久久婷婷国产麻豆91天堂| 亚洲欧美日韩国产成人| 亚洲七七久久综合桃花剧情介绍| 国产精品影视天天线| 欧美日韩国产麻豆| 巨乳诱惑日韩免费av| 亚洲欧美另类中文字幕| 一本久道久久综合婷婷鲸鱼| 亚洲国产欧美日韩| 欧美国产精品一区|