WMI を使おうと思ったらRPC_E_TOO_LATEが返ってきた件

WMI を使おうと思ったら RPC_E_TOO_LATE 0x80010119 が返ってくるエラーが。
前任者のソース見たら、

    if(hRes == RPC_E_TOO_LATE){
       // 正常値を返す
        hRes = NULL;
    }

となっていて、この場合無視して処理することになってたでござる

はたしてそのまま処理していいのかって話なんだけど、
継続したらこうなった

hRes = pEnumBIOS->Next(TIMEOUT, 1, &pBIOS, &uReturned);
// hRes = 0x80041003 (WBEM_E_ACCESS_DENIED)
if(hRes != S_OK){
    IErrorInfo *pIerrinfo;
    if(GetErrorInfo(0, &pIerrinfo) == S_OK){
            BSTR *pbstrErr = NULL;
            if(pIerrinfo->GetDescription(pbstrErr) == S_OK){   <-ここでクラッシュ

WMI Error Constants (Windows)
|。・ω・)。o ( あかんやんか! )

結論:RPC_E_TOO_LATE は無視してはいけない

最初の ShowWindow(hDlg,1);
より前で呼ぶと RPC_E_TOO_LATE が S_OK に変わったでござる。

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です