Không đ?ng b? đ?a i/o xu?t hi?n như đ?ng b? trên Windows NT, Windows 2000 và Windows XP

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 156932 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

? Trang này

Tóm t?t

T?p I/O trên Microsoft Windows NT, Windows 2000 và Windows XP có th? đ?ng b? ho?c không đ?ng b?. Các hành vi m?c đ?nh cho I/O là đ?ng b?: m?t ch?c năng I/O đư?c g?i là và tr? l?i khi I/O hoàn t?t. I/O không đ?ng b?, m?t khác, cho phép m?t ch?c năng I/O tr? l?i th?c hi?n l?i cho ngư?i g?i ngay l?p t?c, nhưng I/O không đư?c gi? đ?nh là hoàn toàn cho đ?n khi m?t s? th?i gian trong tương lai. hệ điều hành thông báo cho ngư?i g?i khi I/O hoàn t?t. Ngoài ra, ngư?i g?i có th? xác đ?nh t?nh tr?ng c?a các ho?t đ?ng I/O xu?t s?c b?ng cách s? d?ng các b?n ghi d?ch v? c?a hệ điều hành.

L?i th? c?a không đ?ng b? I/O là ngư?i g?i có th?i gian đ? làm khác làm vi?c ho?c v?n đ? nhi?u hơn yêu c?u trong khi thao tác I/O đang đư?c hoàn t?t. Các thu?t ng? Overlapped I/O thư?ng đư?c s? d?ng cho i/o không đ?ng b? và ph?ng không ch?ng chéo I/o cho i/o đ?ng b?. Bài vi?t này s? d?ng các đi?u kho?n Asynchronous và Đ?ng b? cho I/O ho?t đ?ng theo Windows NT. Bài vi?t này gi? đ?nh các ngư?i đ?c có m?t s? quen v?i các ch?c năng t?p tin i/o ch?ng h?n như CreateFile, ReadFile, WriteFile.

Thư?ng xuyên, không đ?ng b? I/O ho?t đ?ng ho?t đ?ng c?ng gi?ng như đ?ng b? I/O. m?t s? đi?u ki?n bài vi?t này th?o lu?n trong các ph?n sau đó th?c hi?n I/O ho?t đ?ng hoàn thành đ?ng b?. Ngư?i g?i không có th?i gian cho n?n t?ng làm vi?c b?i v? các ch?c năng I/O không tr? l?i cho đ?n khi I/O là hoàn thành.

M?t s? ch?c năng có liên quan đ?n I/O đ?ng b? và không đ?ng b?. Bài vi?t này s? d?ng ReadFile và WriteFile như là ví d?; l?a ch?n thay th? t?t s? là ReadFileEx và WriteFileEx. M?c dù bài vi?t này th?o lu?n ch? đ?a i/o đ?c bi?t, nhi?u ngư?i trong s? các nguyên t?c có th? đư?c áp d?ng cho các lo?i khác c?a I/O, ch?ng h?n như n?i ti?p I/O ho?c m?ng I/O.

Lưu ?: b?i v? Windows 95 không h? tr? không đ?ng b? I/O trên thi?t b? đ?a (m?c dù nó không trên các lo?i thi?t b? I/O), hành vi c?a nó không đư?c b?o hi?m trong bài vi?t này.

Thông tin thêm

I/o thi?t l?p không đ?ng b?

C? FILE_FLAG_OVERLAPPED ph?i đư?c xác đ?nh trong CreateFile khi các t?p tin đư?c m? ra. Lá c? này cho phép I/O ho?t đ?ng trên các t?p tin đư?c th?c hi?n không đ?ng b?. Dư?i đây là m?t ví d?:
   HANDLE hFile;

   hFile = CreateFile(szFileName,
                      GENERIC_READ,
                      0,
                      NULL,
                      OPEN_EXISTING,
                      FILE_FLAG_NORMAL | FILE_FLAG_OVERLAPPED,
                      NULL);

   if (hFile == INVALID_HANDLE_VALUE)
      ErrorOpeningFile();
				
H?y c?n th?n khi m? hóa cho I/O không đ?ng b? b?i v? h? th?ng d? tr? các quy?n th?c hi?n thao tác đ?ng b? n?u nó c?n ph?i. V? v?y, nó là t?t nh?t n?u b?n vi?t các chương tr?nh đ? x? l? m?t cách chính xác m?t I/O ho?t đ?ng có th? đư?c hoàn thành đ?ng b? ho?c không đ?ng b?. Các m?u m? ch?ng t? xem xét này.

Có r?t nhi?u đi?u, m?t chương tr?nh có th? làm trong khi ch? đ?i không đ?ng b? Các ho?t đ?ng đ? hoàn thành, ch?ng h?n như x?p hàng ho?t đ?ng b? sung, ho?c làm n?n t?ng d?ng công vi?c. Ví d?, các m? sau đây đúng cách x? l? ch?ng chéo và không ch?ng chéo hoàn thành m?t ho?t đ?ng đ?c. Nó không có g? hơn ch? đ?i cho I/O xu?t s?c đ? hoàn thành:
   if (!ReadFile(hFile,
                 pDataBuf,
                 dwSizeOfBuffer,
                 &NumberOfBytesRead,
                 &osReadOperation )
   {
      if (GetLastError() != ERROR_IO_PENDING)
      {
         // Some other error occurred while reading the file.
         ErrorReadingFile();
         ExitProcess(0);
      }
      else
         // Operation has been queued and
         // will complete in the future.
         fOverlapped = TRUE;
   }
   else
      // Operation has completed immediately.
      fOverlapped = FALSE;

   if (fOverlapped)
   {
      // Wait for the operation to complete before continuing.
      // You could do some background work if you wanted to.
      if (GetOverlappedResult( hFile,
                               &osReadOperation,
                               &NumberOfBytesTransferred,
                               TRUE))
         ReadHasCompleted(NumberOfBytesTransferred);
      else
         // Operation has completed, but it failed.
         ErrorReadingFile();
   }
   else
      ReadHasCompleted(NumberOfBytesRead);
				
Lưu ? r?ng & NumberOfBytesRead thông qua vào ReadFile là khác nhau t? & NumberOfBytesTransferred thông qua vào GetOverlappedResult. N?u m?t ho?t đ?ng đ? đư?c th?c hi?n không đ?ng b?, sau đó GetOverlappedResult đư?c s? d?ng đ? xác đ?nh S? byte, th?c t? chuy?n trong các ho?t đ?ng sau khi nó đ? hoàn thành. Các & NumberOfBytesRead thông qua vào ReadFile là vô ngh?a.

N?u, m?t khác, m?t ho?t đ?ng đư?c hoàn thành ngay l?p t?c, sau đó & NumberOfBytesRead đư?c thông qua vào ReadFile là h?p l? cho s? lư?ng byte đ?c. Trong trư?ng h?p này, b? qua c?u trúc OVERLAPPED thông qua vào ReadFile; không s? d?ng nó v?i GetOverlappedResult ho?c WaitForSingleObject.

M?t caveat v?i ho?t đ?ng không đ?ng b? là r?ng b?n không ph?i s? d?ng m?t c?u trúc OVERLAPPED cho đ?n khi chi?n d?ch đang ch? x? l? c?a nó đ? hoàn thành. Khác t?, n?u b?n có ba xu?t s?c I/O ho?t đ?ng, b?n ph?i s? d?ng ba OVERLAPPED c?u trúc. N?u b?n tái s? d?ng m?t c?u trúc OVERLAPPED, b?n s? nh?n đư?c k?t qu? không th? đoán trư?c trong ho?t đ?ng I/O và b?n có th? kinh nghi?m tham nh?ng d? li?u. Ngoài ra, trư?c khi b?n có th? s? d?ng m?t c?u trúc OVERLAPPED cho l?n đ?u tiên, ho?c trư?c khi b?n tái s? d?ng nó sau khi m?t ho?t đ?ng trư?c đó đ? hoàn t?t, b?n ph?i chính xác kh?i nó v? v?y không có d? li?u trái trên ?nh hư?ng đ?n các ho?t đ?ng m?i.

Cùng lo?i c?a các h?n ch? áp d?ng cho các b? đ?m d? li?u đư?c s? d?ng trong m?t ho?t đ?ng. M?t b? đ?m d? li?u không ph?i đư?c đ?c ho?c vi?t lưu cho đ?n khi nó tương ?ng I/O ho?t đ?ng đ? hoàn thành; đ?c ho?c vi?t các b? đ?m có th? gây ra l?i và d? li?u b? l?i.

Không đ?ng b? i/o v?n xu?t hi?n đ? là xoay

N?u b?n th?c hi?n theo các hư?ng d?n trư?c đó trong bài vi?t này, Tuy nhiên, t?t c? các ho?t đ?ng I/O v?n thư?ng hoàn t?t đ?ng b? theo th? t? phát hành, và không ai trong s? các ho?t đ?ng ReadFile tr? l?i sai v?i GetLastError() tr? v? ERROR_IO_PENDING, đi?u này có ngh?a là b?n không có th?i gian cho b?t k? công vi?c n?n. T?i sao đi?u này x?y ra?

Có m?t s? l? do t?i sao I/O ho?t đ?ng hoàn t?t đ?ng b? ngay c? khi b?n có m? hóa cho ho?t đ?ng không đ?ng b?:

Nén

M?t c?n tr? cho ho?t đ?ng không đ?ng b? là NTFS nén. Các t?p tin H? th?ng đi?u khi?n s? không truy c?p vào t?p tin nén không đ?ng b?; thay vào đó t?t c? ho?t đ?ng ch? đư?c th?c hi?n đ?ng b?. Đi?u này áp d?ng cho các t?p tin nén v?i ti?n ích tương t? như nén hay PKZIP.

NTFS m? hóa

Tương t? như nén, m? hóa t?p tin gây ra tr?nh đi?u khi?n h? th?ng đ? chuy?n đ?i I/O không đ?ng b? đ? đ?ng b?. N?u các t?p tin đư?c gi?i m?, các yêu c?u I/O s? không đ?ng b?.

M? r?ng t?p

M?t l? do r?ng I/O ho?t đ?ng đư?c hoàn t?t đ?ng b? là các ho?t đ?ng chính m?nh. Windows NT, b?t k? vi?t ho?t đ?ng vào m?t t?p tin m? r?ng chi?u dài c?a nó s? đư?c đ?ng b?.

Lưu ?: ?ng d?ng có th? th?c hi?n các ho?t đ?ng ghi trư?c đó đ? đ? c?p không đ?ng b? b?ng cách thay đ?i đ? dài d? li?u h?p l? c?a các t?p tin b?ng cách s? d?ng ch?c năng SetFileValidData, và sau đó phát hành m?t WriteFile.

S? d?ng SetFileValidData (trong đó có s?n trên Windows XP và phiên b?n sau này), ?ng d?ng có th? hi?u qu? m? r?ng t?p tin mà không incurring m?t h?nh ph?t hi?u su?t cho zero-đi?n chúng.

B?i v? h? th?ng t?p NTSF không zero-đi?n các d? li?u lên đ?n đ? dài d? li?u h?p l? (VDL) đư?c xác đ?nh b?i SetFileValidData, ch?c năng này có tác đ?ng an ninh nơi các t?p tin có th? đư?c ch? đ?nh c?m mà trư?c đây b? chi?m đóng b?i các t?p tin khác. V? v?y, SetFileValidData yêu c?u ngư?i g?i có SeManageVolumePrivilege m?i đư?c kích ho?t (theo m?c đ?nh, đi?u này đư?c ch? đ? qu?n tr? viên). Microsoft khuy?n cáo r?ng ISV c?n th?n xem xét tác đ?ng c?a vi?c s? d?ng ch?c năng này.

B? nh? cache

H?u h?t các đi?u khi?n I/O (đ?a, truy?n thông, và nh?ng ngư?i khác) có m? s? trư?ng h?p đ?c bi?t nơi mà n?u m?t yêu c?u I/O có th? đư?c hoàn thành "ngay l?p t?c", chi?n d?ch s? đư?c hoàn thành và ch?c năng ReadFile ho?c WriteFile s? tr? l?i đúng s? th?t. T?t c? các cách, các lo?i ho?t đ?ng dư?ng như đư?c đ?ng b?. Cho m?t đ?a thi?t b? thông thư?ng, m?t yêu c?u I/O có th? đư?c hoàn thành "ngay" khi d? li?u đư?c lưu tr? trong b? nh?.

D? li?u không ph?i là trong b? nh? Cache

sơ đ? sàn b? nh? cache có th? vi?c ch?ng l?i b?n, Tuy nhiên, n?u các d? li?u không ph?i là t?i các b? nh? cache. B? nh? cache c?a Windows NT đư?c th?c hi?n trong n?i b? b?ng cách s? d?ng ánh x? t?p tin. Qu?n l? b? nh? trong Windows NT không cung c?p m?t trang không đ?ng b? l?i các cơ ch? qu?n l? ánh x? t?p tin đư?c s? d?ng b?i ngư?i qu?n l? b? nh? cache. Các qu?n l? b? nh? cache có th?, Tuy nhiên, ki?m tra xem các trang yêu c?u là trong b? nh?, do đó, n?u b?n phát hành m?t chi lưu tr? không đ?ng b?, và các trang không ph?i là trong b? nh?, các tr?nh đi?u khi?n h? th?ng t?p gi? đ?nh r?ng b?n không mu?n ch? đ? c?a b?n b? ch?n và yêu c?u s? đư?c x? l? b?i m?t h? bơi gi?i h?n c?a công nhân ch? đ?. Ki?m soát đư?c tr? v? chương tr?nh c?a b?n sau khi cu?c g?i ReadFile c?a b?n v?i đ?c v?n đang ch? gi?i quy?t.

Đi?u này làm vi?c t?t cho m?t s? nh? các yêu c?u, nhưng v? các h? bơi c?a ch? đ? c?a công nhân là gi?i h?n (hi?n ba trên m?t h? th?ng 16MB), có s? v?n đư?c x?p hàng ch? có m?t vài yêu c?u đ?i đ? tr?nh đi?u khi?n đ?a t?i m?t th?i đi?m c? th?. N?u b?n phát hành r?t nhi?u I/O ho?t đ?ng cho d? li?u đó không ph?i là trong b? nh? cache, b? nh? cache qu?n l? và qu?n l? b? nh? tr? nên b?o h?a và yêu c?u c?a b?n đư?c th?c hi?n đ?ng b?.

Hành vi c?a tr?nh qu?n l? b? nh? cache có th? b? ?nh hư?ng d?a trên đ?nh b?n truy c?p vào m?t t?p tin tu?n t? ho?c ng?u nhiên. L?i ích c?a b? nh? cache đư?c nh?n th?y H?u h?t khi truy c?p vào t?p tin tu?n t?. C? FILE_FLAG_SEQUENTIAL_SCAN CreateFile cu?c g?i s? t?i ưu hóa b? nh? cache cho lo?i truy c?p. Tuy nhiên, n?u b?n truy c?p vào các t?p tin m?t cách ng?u nhiên, s? d?ng các C? FILE_FLAG_RANDOM_ACCESS trong CreateFile đ? hư?ng d?n qu?n l? b? nh? cache đ? t?i ưu hóa hành vi c?a nó cho truy c?p ng?u nhiên.

Không S? d?ng B? nh? Cache

C? FILE_FLAG_NO_BUFFERING đ? nh?t có hi?u l?c vào các hành vi c?a các h? th?ng t?p cho ho?t đ?ng không đ?ng b?. Đây là cách t?t nh?t đ? đ?m b?o I/O yêu c?u có th?c s? không đ?ng b?. Nó ch? th? h? th?ng t?p không s? d?ng b?t k? b? nh? cache cơ ch? ? t?t c?.

C?nh báo: có m?t s? h?n ch? đ? s? d?ng lá c? này đ? đ? làm v?i liên k?t b? đ?m d? li?u và các thi?t b? ngành kích thư?c. H?y xem ch?c năng trong tài li?u cho các ch?c năng CreateFile đ? bi?t thêm thông tin v? cách s? d?ng lá c? này đúng cách.

K?t qu? ki?m tra th? gi?i th?c

Sau đây là m?t s? k?t qu? ki?m tra t? các m?u m?. T?m quan tr?ng c?a các con s? không ph?i là quan tr?ng ? đây và thay đ?i t? máy tính đ?n máy tính, nhưng m?i quan h? s? so v?i nhau illuminates các ?nh hư?ng t?ng h?p c?a nh?ng lá c? trên hi?u su?t.

B?n có th? mong đ?i đ? xem k?t qu? tương t? như sau đây:
  • Th? nghi?m 1
    Asynchronous, unbuffered I/O:  asynchio /f*.dat /n
    
       Operations completed out of the order in which they were requested.
       500 requests queued in 0.224264 seconds.
       500 requests completed in 4.982481 seconds.
    						
    Ki?m tra này ch?ng t? r?ng chương tr?nh đ? đ? c?p ? c?p 500 I/O yêu c?u m?t cách nhanh chóng và đ? có r?t nhi?u th?i gian đ? làm công vi?c khác ho?c v?n đ? nhi?u hơn yêu c?u.
  • Ki?m tra 2
    Synchronous, unbuffered I/O: asynchio /f*.dat /s /n
    
       Operations completed in the order issued.
       500 requests queued and completed in 4.495806 seconds.
    						
    Ki?m tra này ch?ng t? r?ng chương tr?nh này đ? dành 4.495880 giây g?i ReadFile đ? hoàn thành các ho?t đ?ng, trong khi th? nghi?m 1 dành ch? 0.224264 giây đ? phát hành các yêu c?u tương t?. Trong th? nghi?m 2, không có th?i gian "thêm" cho chương tr?nh đ? làm b?t k? n?n làm vi?c.
  • Th? nghi?m 3
    Asynchronous, buffered I/O: asynchio /f*.dat
    
       Operations completed in the order issued.
       500 requests issued and completed in 0.251670 seconds.
    						
    Ki?m tra này ch?ng t? s? đ?ng b? c?a b? nh? cache. T?t c? l?n đ?c đ? đư?c phát hành và hoàn thành trong 0.251670 giây. Nói cách khác, không đ?ng b? yêu c?u đ? đư?c hoàn thành đ?ng b?. Đi?u này ki?m tra c?ng ch?ng t? hi?u su?t cao c?a tr?nh qu?n l? b? nh? cache khi d? li?u b? nh? cache.
  • Ki?m tra 4
    Synchronous, buffered I/O: asynchio /f*.dat /s
    
       Operations completed in the order issued.
       500 requests and completed in 0.217011 seconds.
    						
    Th? nghi?m này cho th?y k?t qu? tương t? như trong th? nghi?m 3. Lưu ? r?ng các l?n đ?c đ?ng b? t? b? nh? cache hoàn thành nhanh hơn m?t chút so v?i không đ?ng b? l?n đ?c t? b? nh? cache. Ki?m tra này c?ng ch?ng t? hi?u su?t cao c?a tr?nh qu?n l? b? nh? cache khi d? li?u trong b? nh? cache.

K?T LU?N

B?n có th? quy?t đ?nh phương pháp mà là t?t nh?t b?i v? t?t c? ph? thu?c vào lo?i, kích thư?c và s? lư?ng ho?t đ?ng chương tr?nh c?a b?n th?c hi?n.

Truy c?p t?p tin m?c đ?nh mà không có ch? đ?nh b?t k? c? đ?c bi?t đ? CreateFile là m?t ho?t đ?ng đ?ng b? và lưu tr?.

Lưu ?: b?n nh?n đư?c m?t s? hành vi không đ?ng b? t? đ?ng trong ch? đ? này b?i v? tr?nh đi?u khi?n h? th?ng t?p không đoán trư?c không đ?ng b? trư?c đ?c và không đ?ng b? lư?i bi?ng vi?t s?a đ?i d? li?u. M?c dù đi?u này không làm cho ?ng d?ng [ASCII 146] s I/O không đ?ng b?, đó là trư?ng h?p l? tư?ng cho đ?i đa s? các ?ng d?ng đơn gi?n.

N?u, m?t khác, ?ng d?ng c?a b?n không ph?i là đơn gi?n, b?n có th? ph?i làm m?t s? h? sơ và hi?u su?t giám sát đ? xác đ?nh cách t?t nh?t, tương t? như các bài ki?m tra minh h?a trư?c đó trong bài vi?t này. H? sơ th?i gian chi tiêu trong các Ch?c năng ReadFile ho?c WriteFile và sau đó so sánh th?i gian này đ? làm th? nào lâu nó m?t Đ?i v?i th?c t? I/O ho?t đ?ng đ? hoàn thành là c?c k? h?u ích. N?u ph?n th?i gian là chi tiêu trong th?c s? phát hành I/O, sau đó I/O c?a b?n đang hoàn t?t đ?ng b?. Tuy nhiên, n?u chi tiêu th?i gian phát hành I/O yêu c?u là tương đ?i nh? so v?i th?i gian nó m?t cho I/O ho?t đ?ng đ? hoàn t?t, sau đó ho?t đ?ng c?a b?n đang đư?c đi?u tr? không đ?ng b?. Các m?u M? đ? đ? c?p trư?c đó trong bài vi?t này s? d?ng các ch?c năng QueryPerformanceCounter đ? làm c?a riêng c?a nó n?i b? h? sơ.

Hi?u su?t giám sát có th? giúp xác đ?nh làm th? nào hi?u qu? chương tr?nh c?a b?n là s? d?ng đ?a và b? nh? cache. Theo d?i b?t k? c?a các qu?y hi?u su?t cho đ?i tư?ng đ?m ?n s? cho bi?t hi?u su?t c?a ngư?i qu?n l? b? nh? cache. Theo d?i hi?u su?t qu?y cho đ?a v?t l? ho?c h?p l? đ?a đ?i tư?ng s? cho bi?t hi?u su?t c?a các h? th?ng đ?a.

Có m?t s? ti?n ích h?u ích trong vi?c theo d?i hi?u su?t; PerfMon và DiskPerf đ?c bi?t h?u ích. H? th?ng thu th?p d? li?u v? hi?u su?t c?a các h? th?ng đ?a, b?n ph?i đ?u tiên l?nh diskperf -y. Sau khi b?n l?nh, b?n ph?i kh?i đ?ng l?i h? th?ng đ? B?t đ?u thu th?p d? li?u.

Tham kh?o

Đ? bi?t thêm chi ti?t v? các ti?n ích và hi?u su?t giám sát, h?y xem ph?n "t?i ưu hóa Windows NT" trong các ngu?n tài nguyên Windows NT B? tài li?u hư?ng d?n.
SQL Server yêu c?u h? th?ng đ? h? tr? 'cung c?p b?o đ?m đ? ?n đ?nh các phương ti?n truy?n thông' như đư?c nêu trong chương tr?nh Microsoft SQL Server Always-On lưu tr? gi?i pháp đánh giá. FoĐ? bi?t thêm chi ti?t v? các yêu c?u đ?u vào và đ?u ra cho b? máy cơ s? d? li?u SQL Server, b?m s? bài vi?t sau đ? xem bài vi?t trong cơ s? ki?n th?c Microsoft:
967576Microsoft SQL Server b? máy cơ s? d? li?u công c? đ?u vào/đ?u ra yêu c?u

Thu?c tính

ID c?a bài: 156932 - L?n xem xét sau cùng: 30 Tháng Năm 2013 - Xem xét l?i: 3.0
Áp d?ng
  • Microsoft Win32 Application Programming Interface
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2008 Standard
T? khóa: 
kbapi kbfileio kbinfo kbkernbase kbmt KB156932 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài viết này được d?ch b?ng phần mềm dịch thu?t của Microsoft và có thể được Cộng đồng Microsoft chỉnh sửa l?i thông qua công nghệ CTF thay vì một biên dịch viên chuyên nghiệp. Microsoft cung c?p các bài vi?t đư?c c? biên d?ch viên và ph?n m?m d?ch thu?t th?c hi?n và c?ng đ?ng ch?nh s?a l?i đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng nhi?u ngôn ng? Tuy nhiên, bài vi?t do máy d?ch hoặc thậm chí cộng đồng chỉnh sửa sau không ph?i lúc nào c?ng hoàn h?o. Các bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này: 156932

Cung cấp Phản hồi

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com