Commit 79165b16 authored by Paul Gofman's avatar Paul Gofman Committed by Alexandre Julliard

nsi: Implement NsiCancelChangeNotification().

parent a72f91f5
......@@ -119,9 +119,15 @@ err:
DWORD WINAPI NsiCancelChangeNotification( OVERLAPPED *ovr )
{
FIXME( "%p stub.\n", ovr );
DWORD err = ERROR_SUCCESS;
TRACE( "%p.\n", ovr );
return ERROR_NOT_SUPPORTED;
if (!ovr) return ERROR_NOT_FOUND;
if (!CancelIoEx( get_nsi_device( TRUE ), ovr ))
err = GetLastError();
return err;
}
DWORD WINAPI NsiEnumerateObjectsAllParameters( DWORD unk, DWORD unk2, const NPI_MODULEID *module, DWORD table,
......
......@@ -1056,24 +1056,24 @@ void test_change_notifications(void)
ok( !bret && GetLastError() == ERROR_IO_INCOMPLETE, "got bret %d, err %lu.\n", bret, GetLastError() );
ret = NsiCancelChangeNotification( NULL );
todo_wine ok( ret == ERROR_NOT_FOUND, "got %lu.\n", ret );
ok( ret == ERROR_NOT_FOUND, "got %lu.\n", ret );
ret = NsiCancelChangeNotification( &ovr );
todo_wine ok( !ret, "got %lu.\n", ret );
ok( !ret, "got %lu.\n", ret );
bytes = 0xdeadbeef;
bret = GetOverlappedResult( handle, &ovr, &bytes, FALSE );
bret = GetOverlappedResult( handle, &ovr, &bytes, TRUE );
todo_wine ok( !bret && GetLastError() == ERROR_OPERATION_ABORTED, "got bret %d, err %lu.\n", bret, GetLastError() );
todo_wine ok( ovr.Internal == (ULONG)STATUS_CANCELLED, "got %Ix.\n", ovr.Internal );
todo_wine ok( !bytes, "got %lu.\n", bytes );
ok( !bret && GetLastError() == ERROR_OPERATION_ABORTED, "got bret %d, err %lu.\n", bret, GetLastError() );
ok( ovr.Internal == (ULONG)STATUS_CANCELLED, "got %Ix.\n", ovr.Internal );
ok( !bytes, "got %lu.\n", bytes );
bret = GetOverlappedResult( handle2, &ovr2, &bytes, FALSE );
ok( !bret && GetLastError() == ERROR_IO_INCOMPLETE, "got bret %d, err %lu.\n", bret, GetLastError() );
ret = NsiCancelChangeNotification( &ovr2 );
todo_wine ok( !ret, "got %lu.\n", ret );
bret = GetOverlappedResult( handle, &ovr, &bytes, FALSE );
todo_wine ok( !bret && GetLastError() == ERROR_OPERATION_ABORTED, "got bret %d, err %lu.\n", bret, GetLastError() );
ok( !ret, "got %lu.\n", ret );
bret = GetOverlappedResult( handle, &ovr, &bytes, TRUE );
ok( !bret && GetLastError() == ERROR_OPERATION_ABORTED, "got bret %d, err %lu.\n", bret, GetLastError() );
ret = NsiRequestChangeNotification( 0, &NPI_MS_NDIS_MODULEID, NSI_NDIS_INDEX_LUID_TABLE, &ovr, &handle );
todo_wine ok( ret == ERROR_INVALID_PARAMETER, "got %lu.\n", ret );
......@@ -1081,9 +1081,9 @@ void test_change_notifications(void)
ret = NsiRequestChangeNotification( 0, &NPI_MS_IPV4_MODULEID, NSI_IP_FORWARD_TABLE, &ovr, &handle );
ok( ret == ERROR_IO_PENDING, "got %lu.\n", ret );
ret = NsiCancelChangeNotification( &ovr );
todo_wine ok( !ret, "got %lu.\n", ret );
bret = GetOverlappedResult( handle, &ovr, &bytes, FALSE );
todo_wine ok( !bret && GetLastError() == ERROR_OPERATION_ABORTED, "got bret %d, err %lu.\n", bret, GetLastError() );
ok( !ret, "got %lu.\n", ret );
bret = GetOverlappedResult( handle, &ovr, &bytes, TRUE );
ok( !bret && GetLastError() == ERROR_OPERATION_ABORTED, "got bret %d, err %lu.\n", bret, GetLastError() );
}
START_TEST( nsi )
......
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