コード例 #1
0
ファイル: asmlink.cpp プロジェクト: ArildF/masters
HRESULT CAsmLink::LinkResource(mdAssembly AssemblyID, LPCWSTR pszFileName, LPCWSTR pszNewLocation, LPCWSTR pszResourceName, DWORD dwFlags)
{
    ASSERT(m_bInited && !m_bPreClosed);
    ASSERT(AssemblyID == TokenFromRid(mdtAssembly, 1) || AssemblyID == AssemblyIsUBM);

    if (wcslen(pszFileName) > MAX_PATH)
        return FileNameTooLong(pszFileName); // File name too long
    HRESULT hr = S_OK;
    if (AssemblyID == AssemblyIsUBM) {
        hr = E_INVALIDARG;
    } else {
        if (pszNewLocation == NULL || pszNewLocation[0] == 0)
            pszNewLocation = pszFileName;
        
        CFile *file = NULL;
        file = new CFile( pszNewLocation, (IMetaDataEmit*)NULL, m_pError, this);
        if (file != NULL && pszNewLocation != NULL && pszNewLocation[0] != 0 &&
            wcscmp(pszFileName, pszNewLocation) != 0) {
            if (FAILED(hr = file->SetSource(pszFileName))) {
                delete file;
                return hr;
            }
        }
        hr = m_pAssem->AddFile( file, ffContainsNoMetaData, NULL);
        if (SUCCEEDED(hr))
            hr = m_pAssem->AddResource(file->GetFileToken(), pszResourceName, 0, dwFlags);
        else
            delete file;
    }
    return hr;
}
コード例 #2
0
ファイル: asmlink.cpp プロジェクト: ArildF/masters
HRESULT CAsmLink::SetAssemblyFile(LPCWSTR pszFilename, IMetaDataEmit *pEmitter, AssemblyFlags afFlags, mdAssembly *pAssemblyID)
{
    ASSERT(m_bInited && !m_bPreClosed && !m_pAssem);
    ASSERT(pEmitter != NULL && pAssemblyID != NULL);
    HRESULT hr = E_FAIL;
    
    // NULL filename means 'InMemory' assembly, but we need a filename so convert it to the
    // empty string.
    if (pszFilename == NULL) {
        ASSERT(afFlags & afInMemory);
        pszFilename = L"";
    }

    if (FAILED(hr = SetNonAssemblyFlags(afFlags)))
        return hr;

    if (wcslen(pszFilename) > MAX_PATH)
        return FileNameTooLong(pszFilename); // File name too long

    CComPtr<IMetaDataAssemblyEmit> pAEmitter;
    hr = pEmitter->QueryInterface(IID_IMetaDataAssemblyEmit, (void**)&pAEmitter);
    if (SUCCEEDED(hr)) {
        m_pAssem = new CAssemblyFile(pszFilename, afFlags, pAEmitter, pEmitter, m_pError, this);
        *pAssemblyID = TokenFromRid(mdtAssembly, 1);
    }
    return hr;
}
コード例 #3
0
ファイル: asmlink.cpp プロジェクト: ArildF/masters
HRESULT CAsmLink::AddFile(mdAssembly AssemblyID, LPCWSTR pszFilename, DWORD dwFlags,
                   IMetaDataEmit *pEmitter, mdFile * pFileToken)
{
    ASSERT(m_bInited && !m_bPreClosed);
    ASSERT(AssemblyID == TokenFromRid(mdtAssembly, 1) || AssemblyID == AssemblyIsUBM);

    // NULL filename means 'InMemory' module, but we need a filename so convert it to the
    // empty string.
    if (pszFilename == NULL)
        pszFilename = L"";


    if (AssemblyID == AssemblyIsUBM) {
        if (m_pAssem == NULL)
            m_pAssem = new CAssemblyFile(m_pError, this);
    }

    if (wcslen(pszFilename) > MAX_PATH)
        return FileNameTooLong(pszFilename); // File name too long

    HRESULT hr = S_OK;
    CFile *file = new CFile(pszFilename, pEmitter, m_pError, this);
    if (FAILED(hr = m_pAssem->AddFile(file, dwFlags, pFileToken)))
        delete file;
    return hr;
}
コード例 #4
0
ファイル: asmlink.cpp プロジェクト: ArildF/masters
HRESULT CAsmLink::ImportFile2(LPCWSTR pszFilename, LPCWSTR pszTargetName, IMetaDataAssemblyImport *pAssemblyScopeIn, 
                      BOOL fSmartImport, mdToken *pFileToken, IMetaDataAssemblyImport **ppAssemblyScope, 
                      DWORD *pdwCountOfScopes)
{
    ASSERT(m_bInited);
    LPWSTR newTarget = NULL;
    bool bNewTarget = false;

    IMetaDataAssemblyImport *pAImport = NULL;
    IMetaDataImport *pImport = NULL;
    mdAssembly tkAssembly;
    if (pszFilename && wcslen(pszFilename) > MAX_PATH)
        return FileNameTooLong(pszFilename);
    if (pszTargetName && wcslen(pszTargetName) > MAX_PATH)
        return FileNameTooLong(pszTargetName); // File name too long

    if (pszTargetName == NULL)
        newTarget = VSAllocStr(pszFilename);
    else
        newTarget = VSAllocStr(pszTargetName);
    
    if (_wcsicmp(newTarget, pszFilename) == 0) {
    } else {
        bNewTarget = true;
    }

    if ((pAImport = pAssemblyScopeIn) != NULL)
    {
        pAImport->AddRef();
    }
    else
    {
        HRESULT hr = m_pDisp->OpenScope(pszFilename, ofRead | ofNoTypeLib, IID_IMetaDataAssemblyImport, (IUnknown**)&pAImport);
        if (FAILED(hr)) {
            *pFileToken = 0;
            if (ppAssemblyScope) *ppAssemblyScope = NULL;
            if (pdwCountOfScopes) *pdwCountOfScopes = 0;
            VSFree(newTarget);
            return hr;
        }
    }

    HRESULT hr;
    VERIFY(SUCCEEDED(hr = pAImport->QueryInterface( IID_IMetaDataImport, (void**)&pImport)));
    hr = pAImport->GetAssemblyFromScope( &tkAssembly);

    if (FAILED(hr)) {
        hr = S_FALSE;
        // This is NOT an assembly
        if (ppAssemblyScope) *ppAssemblyScope = NULL;
        if (pdwCountOfScopes) *pdwCountOfScopes = 1;
        *pFileToken = mdTokenNil;
        CFile* file = new CFile(newTarget, pImport, m_pError, this);
        if (bNewTarget) {
            if (SUCCEEDED(hr = file->SetSource(pszFilename)))
                hr = file->UpdateModuleName();
        }
        pAImport->Release();
        pImport->Release();
        if (SUCCEEDED(hr) && SUCCEEDED(hr = m_pModules->AddFile( file, 0, pFileToken))) {
            if (fSmartImport)
                hr = file->ImportFile( NULL, NULL);
            *pFileToken = TokenFromRid(RidFromToken(*pFileToken), mdtModule);
        }
        if (ppAssemblyScope) *ppAssemblyScope = NULL;
        if (pdwCountOfScopes) *pdwCountOfScopes = 1;
        VSFree(newTarget);
        return hr == S_OK ? S_FALSE : hr;
    } else {
        // It is an Assembly
        CAssemblyFile* assembly = new CAssemblyFile( pszFilename, pAImport, pImport, m_pError, this);
        if (ppAssemblyScope)
            *ppAssemblyScope = pAImport;
        else
            pAImport->Release();
        pImport->Release();
        if (m_bDontDoHashes)
            assembly->DontDoHash();
        hr = assembly->ImportAssembly(pdwCountOfScopes, fSmartImport, m_pDisp);

        if (SUCCEEDED(hr) && bNewTarget)
            hr = assembly->ReportError( ERR_CantRenameAssembly, mdTokenNil, NULL, pszFilename);

        if (FAILED(hr)) {
            delete assembly;
            VSFree(newTarget);
            return hr;
        }

        VSFree(newTarget);
        if (FAILED(hr = m_pImports->AddFile( assembly, 0, pFileToken)))
            delete assembly;
        return SUCCEEDED(hr) ? S_OK : hr;
    }
}
コード例 #5
0
ファイル: fault_tester.cpp プロジェクト: uvbs/Holodeck
int main(int argc, char* argv[])
{
    int iTestCase = 0;

    bErrorVerbose = true;

    char pszDecision[20];

    for (;;)
    {
        // Get the pointers to the functions for disabling and enabling interception...
        getInterceptionDisablers();

        uninterceptedPrint("=== HOLODECK FAULT TESTER 1.0 by TERRY LENTZ ===\n\n");
        uninterceptedPrint("*** FILE FAULTS ***\n");
        uninterceptedPrint("0 - File Not Found\t\t10 - File Cannot Be Created\n");
        uninterceptedPrint("1 - File Cannot Be Accessed\t11 - Filename Too Long\n");
        uninterceptedPrint("2 - Access Denied\t\t12 - Directory Read Only\n");
        uninterceptedPrint("3 - Write Protected\t\t13 - Path Not Found\n");
        uninterceptedPrint("4 - Crc Data Error\t\t14 - Directory Cannot Be Removed\n");
        uninterceptedPrint("5 - Drive Cannot Seek Disk\t15 - Directory Not Empty\n");
        uninterceptedPrint("6 - File In Use\t\t\t16 - Path Invalid\n");
        uninterceptedPrint("7 - File Locked\t\t\t17 - Corrupt Structure\n");
        uninterceptedPrint("8 - Disk Full\t\t\n");
        uninterceptedPrint("9 - File Already Exists\t\t\n\n");
        uninterceptedPrint("*** MEMORY FAULTS ***\n");
        uninterceptedPrint("18 - Insufficient Memory\t\t21 - Invalid Address\n");
        uninterceptedPrint("19 - Invalid Access To Location\t\t22 - Paging File Too Small\n");
        uninterceptedPrint("20 - Segment Locked\t\t\n\n");
        uninterceptedPrint("*** NETWORK FAULTS ***\n");
        uninterceptedPrint("23 - Disconnected \t\t\t26 - Winsock Task Limit Reached\n");
        uninterceptedPrint("24 - Network Not Installed\t\t27 - All Ports Unavailable\n");
        uninterceptedPrint("25 - Wrong Winsock Version\t\t28 - Network is Down\n");


        uninterceptedPrint("\nPlease enter the test that you would like to run: ");

        if (disableInterception != NULL)
            disableInterception();

        scanf("%d", &iTestCase);

        if (enableInterception != NULL)
            enableInterception();

        uninterceptedPrint("\n");

        switch (iTestCase)
        {
        // FileNotFound
        case 0:
            uninterceptedPrint("=== TEST CASE: FileNotFound ===\n");

            if (FileNotFound())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");

            break;

        // FileCannotBeAccessed
        case 1:
            uninterceptedPrint("=== TEST CASE: FileCannotBeAccessed ===\n");

            if (FileCannotBeAccessed())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;

        // AccessDenied
        case 2:
            uninterceptedPrint("=== TEST CASE: AccessDenied ===\n");

            if (AccessDenied())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;

        // WriteProtected
        case 3:
            uninterceptedPrint("=== TEST CASE: WriteProtected ===\n");

            if (WriteProtected())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;

        // CrcDataError
        case 4:
            uninterceptedPrint("=== TEST CASE: CrcDataError ===\n");

            if (CrcDataError())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;

        // DriveCannotSeekDisk
        case 5:
            uninterceptedPrint("=== TEST CASE: DriveCannotSeekDisk ===\n");

            if (DriveCannotSeekDisk())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;

        // FileInUse
        case 6:
            uninterceptedPrint("=== TEST CASE: FileInUse ===\n");

            if (FileInUse())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;

        // FileLocked
        case 7:
            uninterceptedPrint("=== TEST CASE: FileLocked ===\n");

            if (FileLocked())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;

        // DiskFull
        case 8:
            uninterceptedPrint("=== TEST CASE: DiskFull ===\n");

            if (DiskFull())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;

        // FileAlreadyExists
        case 9:
            uninterceptedPrint("=== TEST CASE: FileAlreadyExists ===\n");

            if (FileAlreadyExists())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;

        // FileCannotBeCreated
        case 10:
            uninterceptedPrint("=== TEST CASE: FileCannotBeCreated ===\n");

            if (FileCannotBeCreated())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;

        // FileNameTooLong
        case 11:
            uninterceptedPrint("=== TEST CASE: FileNameTooLong ===\n");

            if (FileNameTooLong())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;

        // DirectoryReadOnly
        case 12:
            uninterceptedPrint("=== TEST CASE: DirectoryReadOnly ===\n");

            if (DirectoryReadOnly())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;

        // PathNotFound
        case 13:
            uninterceptedPrint("=== TEST CASE: PathNotFound ===\n");

            if (PathNotFound())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;

        // DirectoryCannotBeRemoved
        case 14:
            uninterceptedPrint("=== TEST CASE: DirectoryCannotBeRemoved ===\n");

            if (DirectoryCannotBeRemoved())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;

        // DirectoryNotEmpty
        case 15:
            uninterceptedPrint("=== TEST CASE: DirectoryNotEmpty ===\n");

            if (DirectoryNotEmpty())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;

        // PathInvalid
        case 16:
            uninterceptedPrint("=== TEST CASE: PathInvalid ===\n");

            if (PathInvalid())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;

        // CorruptStructure
        case 17:
            uninterceptedPrint("=== TEST CASE: CorruptStructure ===\n");

            if (CorruptStructure())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;

        // InsufficientMemory
        case 18:
            uninterceptedPrint("=== TEST CASE: InsufficientMemory ===\n");

            if (InsufficientMemory())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;

        // InvalidAccessToLocation
        case 19:
            uninterceptedPrint("=== TEST CASE: InvalidAccessToLocation ===\n");

            if (InvalidAccessToLocation())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;

        // SegmentLocked
        case 20:
            uninterceptedPrint("=== TEST CASE: SegmentLocked ===\n");

            if (SegmentLocked())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;

        // InvalidAddress
        case 21:
            uninterceptedPrint("=== TEST CASE: InvalidAddress ===\n");

            if (InvalidAddress())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;

        // PagingFileTooSmall
        case 22:
            uninterceptedPrint("=== TEST CASE: PagingFileTooSmall ===\n");

            if (PagingFileTooSmall())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;

        // Disconnected
        case 23:
            uninterceptedPrint("=== TEST CASE: Disconnected ===\n");

            if (Disconnected())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;

        // NetworkNotInstalled
        case 24:
            uninterceptedPrint("=== TEST CASE: NetworkNotInstalled ===\n");

            if (NetworkNotInstalled())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;

        // WrongWinsockVersion
        case 25:
            uninterceptedPrint("=== TEST CASE: WrongWinsockVersion ===\n");

            if (WrongWinsockVersion())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;

        // WinsockTaskLimitReached
        case 26:
            uninterceptedPrint("=== TEST CASE: WinsockTaskLimitReached ===\n");

            if (WinsockTaskLimitReached())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;

        // AllPortsUnavailable
        case 27:
            uninterceptedPrint("=== TEST CASE: AllPortsUnavailable ===\n");

            if (AllPortsUnavailable())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;

        // NetworkIsDown
        case 28:
            uninterceptedPrint("=== TEST CASE: NetworkIsDown ===\n");

            if (NetworkIsDown())
                uninterceptedPrint("\nTEST Passed!\n");
            else
                uninterceptedPrint("\nTEST Failed!\n");


            break;
        }

        uninterceptedPrint("\nWould You Like to Run Another Test (Y/N) ? ");

        if (disableInterception != NULL)
            disableInterception();

        scanf("%s", pszDecision);

        if (enableInterception != NULL)
            enableInterception();

        if ((_stricmp(pszDecision, "y")))
            break;
    }


    return 0;
}