デバッガ使用しましたら無限ループしてるとこ発見しました。
do{
pSGrab->GetCurrentBuffer(&bufsize, NULL);
 }while(bufsize <= 0);
なぜここが無限ループしているか分かりません。bufsizeは
long *buffer = NULL;
long bufsize = 0;
て宣言しています。なぜ無限ループするかよろしければ教えてください。