unsigned __int64から、上位DWORD、下位DWORDを取り出すマクロ

注意

コード中にも書きましたが、符号なし__int64に対して使うと、値が負のときは、
バグの原因になるかもしれません。

コード

/* QWORDな値から、上位/下位DWORDを取り出す。
 * 符号なしの__int64に対して使うときは、おかしなことになるかもしれない。
 * (一旦、-1をかけて正の数にしてからのほうがいいかも。)
 */
#define HIDWORD(x)	(((x)>>32) & 0xffffffff)
#define LODWORD(x)	((x) & 0xffffffff)

ひとこと

HIDWORDの方、& 0xffffffff って必要なのかな・・・。
とりあえず、下記のサイトに載っていたまま、残しておきました。

参考URL

ほぼパクりました。(一応、xって所を(x)に書き直しただけ)
http://www.experts-exchange.com/Programming/Languages/CPP/Q_20534471.html

DWORD値2つから、QWORDを作る

DWORDは32Bits、QWORDは64Bitsってことで、ここはひとつよろしくお願いします。

typedef unsigned __int64 __uint64;	// QWORDと同じってことで。

__uint64 MakeQWord( DWORD hi, DWORD low)
{
	return ((__uint64)hi << 32) | low;
}