C++で安全なコードを書きたいなら、キャスト前のチェックとか、
->の元がNULLでないことを保証するassertなんかは必須かと

というか、クラッシュするコードの lpszClassや lpszNameの内容チェックコードを
処理の前に挿入してログにでも吐けばいいんじゃね?