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控制碼。
WinHttpReceiveResponse 或 WinHttpQueryDataAvailable 必須已為此控制碼呼叫,而且必須在 呼叫 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。
傳回值
指出作業結果的狀態碼。 傳回的錯誤碼如下。
錯誤碼 | 描述 |
---|---|
|
與伺服器的連線已重設或終止,或遇到不相容的 SSL 通訊協定。 例如,除非用戶端特別啟用 SSL2,否則 WinHTTP 5.1 不支援 SSL2。 |
|
無法執行要求的作業,因為提供的控制碼不是處於正確的狀態。 |
|
此作業所提供的控制碼類型不正確。 |
|
發生內部錯誤。 |
|
作業已取消,通常是因為作業完成之前,要求已關閉的控制碼。 |
|
當傳入回應超過內部 WinHTTP 大小限制時傳回。 |
|
要求已逾時。 |
|
記憶體不足,無法完成要求的作業。 (Windows 錯誤碼) |
備註
根據預設, WinHttpReadDataEx 會在任何資料量寫入您提供的緩衝區之後傳回, (函式不一定會完全填滿您提供) 的緩衝區。
規格需求
最低支援的用戶端 | Windows 10組建 20348 |
最低支援的伺服器 | Windows 10組建 20348 |
目標平台 | Windows |
標頭 | winHTTP.h |
程式庫 | WinHTTP.lib |
Dll | Winhttp.dll |