From: Fabian Maurer dark.shadow4@web.de
--- dlls/coml2/coml2.spec | 2 +- dlls/coml2/storage32.c | 42 ++++++++++++++++++++++++++++++++++++ dlls/ole32/storage32.c | 49 ------------------------------------------ 3 files changed, 43 insertions(+), 50 deletions(-)
diff --git a/dlls/coml2/coml2.spec b/dlls/coml2/coml2.spec index d6b24669f22..364413dbf4d 100644 --- a/dlls/coml2/coml2.spec +++ b/dlls/coml2/coml2.spec @@ -22,7 +22,7 @@ @ stub StgCreatePropSetStg @ stub StgCreatePropStg @ stub StgCreateStorageEx -@ stub StgIsStorageFile +@ stdcall StgIsStorageFile(wstr) @ stdcall StgIsStorageILockBytes(ptr) @ stub StgOpenPropStg @ stub StgOpenStorage diff --git a/dlls/coml2/storage32.c b/dlls/coml2/storage32.c index 873e9fea0e1..dd803c817c9 100644 --- a/dlls/coml2/storage32.c +++ b/dlls/coml2/storage32.c @@ -184,3 +184,45 @@ HRESULT WINAPI StgIsStorageILockBytes(ILockBytes *plkbyt)
return S_FALSE; } + +/****************************************************************************** + * StgIsStorageFile [coml2.@] + */ +HRESULT WINAPI StgIsStorageFile(LPCOLESTR fn) +{ + HANDLE hf; + BYTE magic[8]; + DWORD bytes_read; + + TRACE("%s\n", debugstr_w(fn)); + hf = CreateFileW(fn, GENERIC_READ, + FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); + + if (hf == INVALID_HANDLE_VALUE) + return STG_E_FILENOTFOUND; + + if (!ReadFile(hf, magic, 8, &bytes_read, NULL)) + { + WARN(" unable to read file\n"); + CloseHandle(hf); + return S_FALSE; + } + + CloseHandle(hf); + + if (bytes_read != 8) + { + TRACE(" too short\n"); + return S_FALSE; + } + + if (!memcmp(magic, STORAGE_magic, 8)) + { + TRACE(" -> YES\n"); + return S_OK; + } + + TRACE(" -> Invalid header.\n"); + return S_FALSE; +} diff --git a/dlls/ole32/storage32.c b/dlls/ole32/storage32.c index 496159773a3..f0ec0b5e954 100644 --- a/dlls/ole32/storage32.c +++ b/dlls/ole32/storage32.c @@ -9339,55 +9339,6 @@ end: return r; }
-/****************************************************************************** - * StgIsStorageFile [OLE32.@] - * Verify if the file contains a storage object - * - * PARAMS - * fn [ I] Filename - * - * RETURNS - * S_OK if file has magic bytes as a storage object - * S_FALSE if file is not storage - */ -HRESULT WINAPI -StgIsStorageFile(LPCOLESTR fn) -{ - HANDLE hf; - BYTE magic[8]; - DWORD bytes_read; - - TRACE("%s\n", debugstr_w(fn)); - hf = CreateFileW(fn, GENERIC_READ, - FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, - NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); - - if (hf == INVALID_HANDLE_VALUE) - return STG_E_FILENOTFOUND; - - if (!ReadFile(hf, magic, 8, &bytes_read, NULL)) - { - WARN(" unable to read file\n"); - CloseHandle(hf); - return S_FALSE; - } - - CloseHandle(hf); - - if (bytes_read != 8) { - TRACE(" too short\n"); - return S_FALSE; - } - - if (!memcmp(magic,STORAGE_magic,8)) { - TRACE(" -> YES\n"); - return S_OK; - } - - TRACE(" -> Invalid header.\n"); - return S_FALSE; -} - /************************************************************************ * OleConvert Functions ***********************************************************************/