-
October 26th, 2011, 03:23 AM
#1
ISAPI image
Hello, I am a newbee on WinCE and on ISAPI. I have managed to create an ISAPI dll that dynamically generated html pages and sends them to the client.
When I put an <img> tag in my html, I notice that an additional call to HttpExtensionProc is made with the image (file)name in the lpszPathInfo member of the EXTENSION_CONTROL_BLOCK struct.
My problem is, that I can't find out how to send the image data. My attempts until now fail.
An excerpt of my code (taken from my HttpExtensionProc implementation):
HANDLE hFile;
BYTE byBuffer[512];
DWORD dwBytesRead;
HSE_SEND_HEADER_EX_INFO HeaderExInfo;
char chHeader[100];
hFile = CreateFile(szFilePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
dwBytesRead = GetFileSize(hFile, NULL);
sprintf_s(chHeader, 100, "Content-Type: image/jpeg\r\nContent-length: %d\r\n", dwBytesRead);
HeaderExInfo.pszStatus = "200 OK";
HeaderExInfo.pszHeader = chHeader;
HeaderExInfo.cchStatus = strlen(HeaderExInfo.pszStatus);
HeaderExInfo.cchHeader = strlen(HeaderExInfo.pszHeader);
HeaderExInfo.fKeepConn = FALSE;
pECB->ServerSupportFunction(pECB->ConnID, HSE_REQ_SEND_RESPONSE_HEADER_EX, &HeaderExInfo, NULL, NULL));
ReadFile(hFile, byBuffer, 512, &dwBytesRead, NULL);
while (dwBytesRead > 0) {
g_WriteClient(pECB->ConnID, byBuffer, &dwBytesRead, 0));
ReadFile(hFile, byBuffer, 512, &dwBytesRead, NULL);
}
CloseHandle(hFile);
Any hints?
-
October 26th, 2011, 04:41 AM
#2
Re: ISAPI image
Note, the error I get after the line:
Code:
g_WriteClient(pECB->ConnID, byBuffer, &dwBytesRead, 0));
is 10054 - WSACONNRESET - An existing connection was forcibly closed by the remote host.
Now, I just read on http://www.west-wind.com/weblog/post...lient-oddities that:
However, under IIS5 this value [in my code, the dwBytesRead variable. RV] does not always return the bytes written. It returns 0 and an error code of 10054 - even though the data gets written out to the Response stream just fine. I also remember in the past that I was told (I think by Wade Hilmo) that the result value from WriteClient() is unreliable and can indicate failure when the call actually worked - this was a big thing in IIS 4 and caused me to ignore any errors which hasn't been a problem.
This might be unrelated to WinCE though. But the similar error code triggers me.
In the end, my browser still does not display an image...
BTW - sorry for the ommision of CODE tags in my initial message.
-
October 26th, 2011, 08:17 AM
#3
Re: ISAPI image
Problem solved!
Instead of:
Code:
sprintf_s(chHeader, 100, "Content-Type: image/jpeg\r\nContent-length: %d\r\n", dwBytesRead);
It needed:
Code:
sprintf_s(chHeader, 100, "Content-Type: image/jpeg\r\nContent-length: %d\r\n\r\n", dwBytesRead);
(Thus with an extra \r\n)
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|