[2/2] mscoree: Implement CreateConfigStream
André Hentschel
nerv at dawncrow.de
Mon May 16 16:26:27 CDT 2011
---
dlls/mscoree/mscoree_main.c | 28 ++++++++++++++++++++++++++--
dlls/mscoree/tests/mscoree.c | 12 ++++++------
2 files changed, 32 insertions(+), 8 deletions(-)
diff --git a/dlls/mscoree/mscoree_main.c b/dlls/mscoree/mscoree_main.c
index 6fe32d2..4c2140c 100644
--- a/dlls/mscoree/mscoree_main.c
+++ b/dlls/mscoree/mscoree_main.c
@@ -440,8 +440,32 @@ BOOL WINAPI StrongNameSignatureVerificationEx(LPCWSTR filename, BOOL forceVerifi
HRESULT WINAPI CreateConfigStream(LPCWSTR filename, IStream **stream)
{
- FIXME("(%s, %p): stub\n", debugstr_w(filename), stream);
- return E_NOTIMPL;
+ HANDLE hfile;
+ HGLOBAL hglobal;
+ LPVOID ptr;
+ HRESULT hr;
+ DWORD filesize,read;
+
+ if (!stream) return E_POINTER;
+ if (!filename) return E_FAIL;
+
+ hfile = CreateFileW(filename, GENERIC_READ, FILE_SHARE_READ, NULL,
+ OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+ if (hfile == INVALID_HANDLE_VALUE) return COR_E_FILENOTFOUND;
+
+ filesize = GetFileSize(hfile, NULL);
+
+ hglobal = GlobalAlloc(GHND, filesize);
+ ptr = GlobalLock(hglobal);
+
+ ReadFile(hfile, ptr, filesize, &read, NULL);
+
+ hr = CreateStreamOnHGlobal(hglobal, TRUE, stream);
+ if (FAILED(hr)) return E_FAIL;
+
+ CloseHandle(hfile);
+ GlobalUnlock(hglobal);
+ return hr;
}
HRESULT WINAPI CreateDebuggingInterfaceFromVersion(int nDebugVersion, LPCWSTR version, IUnknown **ppIUnk)
diff --git a/dlls/mscoree/tests/mscoree.c b/dlls/mscoree/tests/mscoree.c
index f80dbb4..2d3af4e 100644
--- a/dlls/mscoree/tests/mscoree.c
+++ b/dlls/mscoree/tests/mscoree.c
@@ -287,21 +287,21 @@ static void test_createconfigstream(void)
GetFullPathNameW(file, MAX_PATH, path, NULL);
hr = pCreateConfigStream(NULL, &stream);
- todo_wine ok(hr == E_FAIL, "CreateConfigStream returned %x\n", hr);
+ ok(hr == E_FAIL, "CreateConfigStream returned %x\n", hr);
hr = pCreateConfigStream(path, NULL);
- todo_wine ok(hr == E_POINTER, "CreateConfigStream returned %x\n", hr);
+ ok(hr == E_POINTER, "CreateConfigStream returned %x\n", hr);
hr = pCreateConfigStream(NULL, NULL);
- todo_wine ok(hr == E_POINTER, "CreateConfigStream returned %x\n", hr);
+ ok(hr == E_POINTER, "CreateConfigStream returned %x\n", hr);
hr = pCreateConfigStream(nonexistent, &stream);
- todo_wine ok(hr == COR_E_FILENOTFOUND, "CreateConfigStream returned %x\n", hr);
+ ok(hr == COR_E_FILENOTFOUND, "CreateConfigStream returned %x\n", hr);
ok(stream == NULL, "Expected stream to be NULL\n");
hr = pCreateConfigStream(path, &stream);
- todo_wine ok(hr == S_OK, "CreateConfigStream failed, hr=%x\n", hr);
- todo_wine ok(stream != NULL, "Expected non-NULL stream\n");
+ ok(hr == S_OK, "CreateConfigStream failed, hr=%x\n", hr);
+ ok(stream != NULL, "Expected non-NULL stream\n");
if (stream)
{
--
Best Regards, André Hentschel
More information about the wine-patches
mailing list