Commit 5af5e401 authored by Nikolay Sivov's avatar Nikolay Sivov Committed by Alexandre Julliard

scrrun: Implement SerialNumber property.

parent 34f8053e
......@@ -978,8 +978,15 @@ static HRESULT WINAPI drive_get_FileSystem(IDrive *iface, BSTR *fs)
static HRESULT WINAPI drive_get_SerialNumber(IDrive *iface, LONG *serial)
{
struct drive *This = impl_from_IDrive(iface);
FIXME("(%p)->(%p): stub\n", This, serial);
return E_NOTIMPL;
BOOL ret;
TRACE("(%p)->(%p)\n", This, serial);
if (!serial)
return E_POINTER;
ret = GetVolumeInformationW(This->root, NULL, 0, (DWORD*)serial, NULL, NULL, NULL, 0);
return ret ? S_OK : E_FAIL;
}
static HRESULT WINAPI drive_get_IsReady(IDrive *iface, VARIANT_BOOL *ready)
......
......@@ -1790,6 +1790,41 @@ static void test_GetDriveName(void)
}
}
static void test_SerialNumber(void)
{
IDriveCollection *drives;
IEnumVARIANT *iter;
IDrive *drive;
VARIANT var;
LONG serial;
HRESULT hr;
hr = IFileSystem3_get_Drives(fs3, &drives);
ok(hr == S_OK, "got 0x%08x\n", hr);
hr = IDriveCollection_get__NewEnum(drives, (IUnknown**)&iter);
ok(hr == S_OK, "got 0x%08x\n", hr);
hr = IEnumVARIANT_Next(iter, 1, &var, NULL);
ok(hr == S_OK, "got 0x%08x\n", hr);
hr = IDispatch_QueryInterface(V_DISPATCH(&var), &IID_IDrive, (void**)&drive);
ok(hr == S_OK, "got 0x%08x\n", hr);
VariantClear(&var);
hr = IDrive_get_SerialNumber(drive, NULL);
ok(hr == E_POINTER, "got 0x%08x\n", hr);
serial = 0xdeadbeef;
hr = IDrive_get_SerialNumber(drive, &serial);
ok(hr == S_OK, "got 0x%08x\n", hr);
ok(serial != 0xdeadbeef, "got %x\n", serial);
IDrive_Release(drive);
IEnumVARIANT_Release(iter);
IDriveCollection_Release(drives);
}
START_TEST(filesystem)
{
HRESULT hr;
......@@ -1823,6 +1858,7 @@ START_TEST(filesystem)
test_ReadAll();
test_Read();
test_GetDriveName();
test_SerialNumber();
IFileSystem3_Release(fs3);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment