static HRESULT ReadAAFFile(aafWChar* pFileName) { IAAFFile* pFile = NULL; IAAFHeader* pHeader = NULL; IAAFDictionary* pDictionary = NULL; IEnumAAFContainerDefs *pPlug = NULL; IAAFContainerDef *pPlugDef = NULL; IAAFDefObject *pDef = NULL; bool bFileOpen = false; aafBool testBool; aafUID_t readUID; HRESULT hr = S_OK; try { // Open the AAF file checkResult(AAFFileOpenExistingRead(pFileName, 0, &pFile)); bFileOpen = true; // Get the AAF file header. checkResult(pFile->GetHeader(&pHeader)); checkResult(pHeader->GetDictionary(&pDictionary)); checkResult(pDictionary->GetContainerDefs(&pPlug)); while(pPlug->NextOne (&pPlugDef) == AAFRESULT_SUCCESS) { checkResult(pPlugDef->QueryInterface (IID_IAAFDefObject, (void **)&pDef)); checkResult(pDef->GetAUID(&readUID)); if(memcmp(&readUID, &testUID, sizeof(aafUID_t)) == 0) { checkResult(pPlugDef->EssenceIsIdentified (&testBool)); checkExpression(testBool == kAAFTrue, AAFRESULT_TEST_FAILED); break; } pDef->Release(); pDef = NULL; pPlugDef->Release(); pPlugDef = NULL; } } catch (HRESULT& rResult) { hr = rResult; } // Cleanup and return if (pDef) pDef->Release(); if (pPlugDef) pPlugDef->Release(); if (pPlug) pPlug->Release(); if (pDictionary) pDictionary->Release(); if (pHeader) pHeader->Release(); if (pFile) { // Close file if (bFileOpen) pFile->Close(); pFile->Release(); } return hr; }