LoadDSArray Example for C++ 6.0 and later
void TestLoadArray(ILEADDicomDSPtr spDataSet)
{
   HRESULT hr;
   VARIANT varData;
   BYTE* pData;
   CFile DicomFile;
   DWORD dwSize;
   LPBYTE pByteArray;
   int nDicomRet;
   CString szClass;
   CString szFlags;
   CString szOut;
   IDicomIODItemPtr pIOD=NULL;
   spDataSet->EnableMethodErrors 
 = FALSE;
   spDataSet->ResetDS();
   //Load the DICOM file from disk
   DicomFile.Open("D:\\Program Files\\LEAD Technologies, 
 Inc\\LEADTOOLS14\\Images\\IMAGE2.dic", CFile::modeRead); 
   //Get the size of the file
   dwSize = DicomFile.GetLength(); 
   //Allocate a buffer to hold the DICOM data
   pByteArray = (LPBYTE) malloc(dwSize); 
   memset(pByteArray, 0,dwSize);
   //Read data into buffer
   DicomFile.Read(pByteArray, dwSize); 
   DicomFile.Close(); 
   //Create a safe array to hold the data
   SAFEARRAY* psa = SafeArrayCreateVector(VT_UI1, 0, dwSize); 
 
   VariantInit(&varData);
   varData.vt = VT_ARRAY | VT_UI1; 
   varData.parray = psa; 
   _variant_t v;
   v.Attach(varData);
   if(psa) 
   { 
      if( SUCCEEDED( hr = SafeArrayAccessData(psa, 
 (VOID**)&pData))) 
      { 
         //Put the data into 
 the safe array
         CopyMemory(pData, 
 pByteArray, dwSize); 
         hr = SafeArrayUnaccessData( 
 psa ); 
         if ( SUCCEEDED( hr 
 ) ) 
         { 
            //Load 
 the DICOM file from memory
            nDicomRet 
 = spDataSet->LoadDSArray(v, 
 0);
            if(nDicomRet 
 == 0)
            {
               //Get 
 the info of the DICOM dataset
               spDataSet->GetInfoDS();
               nDicomRet 
 = spDataSet->FindClassIOD(spDataSet->GetInfoClass());
               if(nDicomRet 
 == 0)
               {
                  //Get 
 the name of the IOD class for this DICOM file and display it
                  pIOD 
 = spDataSet->GetCurrentIOD();
                  BSTR 
 bstr = pIOD->GetName();
                  szClass 
 = bstr;
                  SysFreeString(bstr); 
 
                  szOut.Format("Class: 
 %s", szClass);
                  AfxMessageBox(szOut);
               }
            }
         }
      }
   }
   //Clean up
   v.Detach();
   SafeArrayDestroy(psa);
   free(pByteArray);
   spDataSet->ResetDS();
   spDataSet->EnableMethodErrors = TRUE; 
}