InternetSetStatusCallback

Both synchronous and asynchronous functions use the callback function to indicate the progress of the request, such as resolving a name, connecting to a server, and so on. The callback function is required for an asynchronous operation. The asynchronous request will call back to the application with INTERNET_STATUS_REQUEST_COMPLETE to indicate the request has been completed.

InternetSetStatusCallback function | Microsoft Docs https://docs.microsoft.com/en-us/windows/desktop/api/wininet/nf-wininet-internetsetstatuscallback

Using WinInet HTTP functions in Full Asynchronous Mode – CodeProject

HTTP HEADER

プログラム メモ

HTTP HEADER

HTTP ETag – Wikipedia
If-None-Match: “686897696a7c876b7e”
ETag: “686897696a7c876b7e”
CRC32/ CRC64
HTTP ETag – Wikipedia https://en.wikipedia.org/wiki/HTTP_ETag

If-Modified-Since: Wed, 21 Oct 2015 07:28:00 GMT
If-Modified-Since – HTTP | MDN https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Modified-Since

HTTP RESPONSE

304 Not Modified

年内 仕事は収まりませんでしたが おやすみモード

仕事納めをしてきました
うまく、おさまらず いろいろなことがありましたが
ぼちぼちと遅れながらやっています。

年末年始 しっかりやすんで
遅れを少しでも取り戻していきたい感じ。

Boss Blues Driver BD-2


————- 続きを読む » ( Read More )————-

木枯らしが吹きすさぶころとなりましたが、皆様いかがお過ごしですか?

早いもので、もう師走となりましたが、いかがお過ごしですか?

本年中は大変お世話になりました。
楽しい記事を提供できましたでしょうか?
本Blogが皆様のお役に立てていれば 当方としては大変幸せです。

読んでいただきまことにありがとうございました。

多少早めとはなりますが、年の瀬のご挨拶とさせてください。

PS 冬コミの新作でおすすめはありますか?

それでは 年の瀬が本当に近づく頃にまたご挨拶させてください。

レビログ 管理人 心は萌え

Marshall CODE (2台目に最適)


————- 続きを読む » ( Read More )————-

Marshall Origin 5 Amplifier 買ってよかった



————- 続きを読む » ( Read More )————-

QICounter


class QICounter
{
public:
	LARGE_INTEGER _Frequency;
	LARGE_INTEGER _Start;
	LARGE_INTEGER _End;
	QICounter()
	{
		QueryPerformanceFrequency(&_Frequency);
	}

	DWORD Start()
	{
		QueryPerformanceCounter(&_Start);
		return 0;
	}

	DWORD CountMS()
	{
		QueryPerformanceCounter(&_End);
		DWORD dwTime = (DWORD)((_End.QuadPart - _Start.QuadPart) * 1000.0 / _Frequency.QuadPart);
		return dwTime;
	}

	DWORD CountNS()
	{
		QueryPerformanceCounter(&_End);
		DWORD dwTime = (DWORD)((_End.QuadPart - _Start.QuadPart) * 1000.0 * 1000.0 / _Frequency.QuadPart);
		return dwTime;
	}


};

Fender American Standard Stratocaster



————- 続きを読む » ( Read More )————-

How to get Process.name from processID


void GetProcessNameByProcessID(DWORD PID, std::wstring &name)
{
	//Moe Suzuki

	HANDLE hProceess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, PID);
	if (hProceess==NULL)
	{
		name = _TEXT("none");
		return;
	}

	size_t short_path_buffer_size = MAX_PATH > 4192 ? MAX_PATH : 4192;

	std::vector short_path_buffer(short_path_buffer_size);

	TCHAR *buf_short_name = &short_path_buffer.at(0);

	DWORD short_name_return = GetModuleFileNameEx(hProceess, 0, buf_short_name, short_path_buffer_size);
	if(short_name_return==0)
	{
		name = _TEXT("none");
		CloseHandle(hProceess);
		return;
	}

	DWORD long_path_size = GetFullPathName(buf_short_name, 0, NULL, NULL);
	if (long_path_size == 0)
	{
		name = _TEXT("none");
		CloseHandle(hProceess);
		return;
	}

	long_path_size += 128;
	std::vector buffer_full_path(long_path_size);
	TCHAR *full_path_buffer = &buffer_full_path.at(0);
	TCHAR *buf_long_name = &buffer_full_path.at(0);
	TCHAR *filename;

	long_path_size = GetFullPathName(buf_short_name, long_path_size, full_path_buffer, &filename);
	if (long_path_size == 0)
	{
		name = _TEXT("none");
		CloseHandle(hProceess);
		return;
	}

	char buf[4096];
	if (sizeof(TCHAR) == 1) {
		sprintf_s(buf, 4096, "filename = %s \r\n", filename);
	}else {
		sprintf_s(buf, 4096, "filename = %ls \r\n", filename);
		name = filename;

	}
	OutputDebugStringA(buf);
	CloseHandle(hProceess);

}