Hello All,

I'm trying to use System.IO.FileStream(string, FileMode, FileAccess,
FileShare) in my CRH, but when I call CreateInstance_3 throught my AppDomain
pointer

the hr is equal 0x80131604. I think, this happen because the parameters
FileMode, FileAccess and FileShare are enums on .NET.

Can somebody help me?


BSTR asmName, typeName, fileName;


asmName = SysAllocString(L"mscorlib");
typeName = SysAllocString(L"System.IO.FileStream");
fileName = SysAllocString(L"c:\\csc\\hello.dll");


SAFEARRAY* pFileStreamCtor = SafeArrayCreateVector(VT_VARIANT, 0, 4);

VARIANT param[4];

for(int a = 0; a < 4; ++a)
            VariantInit(&param[a]);

param[0].vt = VT_BSTR;
param[0].bstrVal = fileName;
param[1].vt = VT_I4;
param[1].lVal = FileMode_Open;
param[2].vt = VT_I4;
param[2].lVal = FileAccess_Read;
param[3].vt = VT_I4;
param[3].lVal =  FileShare_Read;

LONG index = 0;

hr = SafeArrayPutElement(pFileStreamCtor, &index, &param);

__FAILED(hr);

hr = pApp->CreateInstance_3(asmName, typeName, VARIANT_TRUE,
BindingFlags_Default, NULL, pFileStreamCtor, NULL, NULL, NULL, &pObjH);

__FAILED(hr); // TargetInvocationException uses the HRESULT
COR_E_TARGETINVOCATION which has the value 0x80131604.

//... CleanUp();


Thanks,

Fabio

You can read messages from the DOTNET archive, unsubscribe from DOTNET, or
subscribe to other DevelopMentor lists at http://discuss.develop.com.

Reply via email to