共用方式為


winHttpReadDataEx 函式 (winHTTP.h)

WinHttpOpenRequest 函式所開啟的控制碼讀取資料。

語法

WINHTTPAPI DWORD WinHttpReadDataEx(
  HINTERNET hRequest,
  LPVOID    lpBuffer,
  DWORD     dwNumberOfBytesToRead,
  LPDWORD   lpdwNumberOfBytesRead,
  ULONGLONG ullFlags,
  DWORD     cbProperty,
  PVOID     pvProperty
);

參數

hRequest

類型:在HINTERNET

從先前呼叫WinHttpOpenRequest傳回的HINTERNET控制碼。

WinHttpReceiveResponseWinHttpQueryDataAvailable 必須已為此控制碼呼叫,而且必須在 呼叫 WinHttpReadDataEx 之前完成。 雖然在WinHttpReceiveResponse完成之後立即呼叫WinHttpReadDataEx可避免緩衝區複製的費用,但這樣做需要您的應用程式使用固定長度緩衝區進行讀取。

lpBuffer

類型:_Out_writes_bytes_to_ (dwNumberOfBytesToRead, *lpdwNumberOfBytesRead) __out_data_source (NETWORK) LPVOID

接收讀取資料之緩衝區的指標。 請確定此緩衝區在 WinHttpReadDataEx 完成之前保持有效。

dwNumberOfBytesToRead

類型:IN DWORD

包含要讀取之位元組數目的不帶正負號長整數值。

lpdwNumberOfBytesRead

類型:OUT LPDWORD

接收讀取位元組數目的不帶正負號長整數變數指標。 WinHttpReadDataEx 會在執行任何工作或錯誤檢查之前,將此值設定為零。 以非同步方式使用 WinHTTP 時,請一律將此參數設定為 Null ,並在回呼函式中擷取資訊;不這麼做可能會導致記憶體錯誤。

ullFlags

類型:IN ULONGLONG

如果您傳遞 WINHTTP_READ_DATA_EX_FLAG_FILL_BUFFER,則 WinHttp 將不會完成 對 WinHttpReadDataEx 的呼叫,直到已填滿提供的資料緩衝區或回應完成為止。 傳遞此旗標會使此 API 的行為相當於 WinHttpReadData的行為。

cbProperty

類型:IN DWORD

保留的。 傳遞 0。

pvProperty

類型:_In_reads_bytes_opt_ (cbProperty) PVOID

保留的。 傳遞 Null。

傳回值

指出作業結果的狀態碼。 傳回的錯誤碼如下。

錯誤碼 描述
ERROR_WINHTTP_CONNECTION_ERROR
與伺服器的連線已重設或終止,或遇到不相容的 SSL 通訊協定。 例如,除非用戶端特別啟用 SSL2,否則 WinHTTP 5.1 不支援 SSL2。
ERROR_WINHTTP_INCORRECT_HANDLE_STATE
無法執行要求的作業,因為提供的控制碼不是處於正確的狀態。
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
此作業所提供的控制碼類型不正確。
ERROR_WINHTTP_INTERNAL_ERROR
發生內部錯誤。
ERROR_WINHTTP_OPERATION_CANCELLED
作業已取消,通常是因為作業完成之前,要求已關閉的控制碼。
ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW
當傳入回應超過內部 WinHTTP 大小限制時傳回。
ERROR_WINHTTP_TIMEOUT
要求已逾時。
ERROR_NOT_ENOUGH_MEMORY
記憶體不足,無法完成要求的作業。 (Windows 錯誤碼)

備註

根據預設, WinHttpReadDataEx 會在任何資料量寫入您提供的緩衝區之後傳回, (函式不一定會完全填滿您提供) 的緩衝區。

規格需求

   
最低支援的用戶端 Windows 10組建 20348
最低支援的伺服器 Windows 10組建 20348
目標平台 Windows
標頭 winHTTP.h
程式庫 WinHTTP.lib
Dll Winhttp.dll

另請參閱