diff --git a/dlls/ntdll/tests/pipe.c b/dlls/ntdll/tests/pipe.c
index a619fee..acead4e 100644
--- a/dlls/ntdll/tests/pipe.c
+++ b/dlls/ntdll/tests/pipe.c
@@ -98,10 +98,10 @@
     loadfunc(NtQueryVolumeInformationFile)
     loadfunc(NtSetInformationFile)
     loadfunc(NtCancelIoFile)
-    loadfunc(NtCancelIoFileEx)
     loadfunc(RtlInitUnicodeString)
 
     /* not fatal */
+    pNtCancelIoFileEx = (void *)GetProcAddress(module, "NtCancelIoFileEx");
     module = GetModuleHandleA("kernel32.dll");
     pOpenThread = (void *)GetProcAddress(module, "OpenThread");
     pQueueUserAPC = (void *)GetProcAddress(module, "QueueUserAPC");
@@ -516,21 +516,27 @@
 
     CloseHandle(hPipe);
 
-    res = create_pipe(&hPipe, FILE_SHARE_READ | FILE_SHARE_WRITE, 0 /* OVERLAPPED */);
-    ok(!res, "NtCreateNamedPipeFile returned %x\n", res);
+    if (pNtCancelIoFileEx)
+    {
+        res = create_pipe(&hPipe, FILE_SHARE_READ | FILE_SHARE_WRITE, 0 /* OVERLAPPED */);
+        ok(!res, "NtCreateNamedPipeFile returned %x\n", res);
 
-    memset(&iosb, 0x55, sizeof(iosb));
-    res = listen_pipe(hPipe, hEvent, &iosb, FALSE);
-    ok(res == STATUS_PENDING, "NtFsControlFile returned %x\n", res);
+        memset(&iosb, 0x55, sizeof(iosb));
+        res = listen_pipe(hPipe, hEvent, &iosb, FALSE);
+        ok(res == STATUS_PENDING, "NtFsControlFile returned %x\n", res);
 
-    res = pNtCancelIoFileEx(hPipe, &iosb, &cancel_sb);
-    ok(!res, "NtCancelIoFileEx returned %x\n", res);
+        res = pNtCancelIoFileEx(hPipe, &iosb, &cancel_sb);
+        ok(!res, "NtCancelIoFileEx returned %x\n", res);
 
-    ok(U(iosb).Status == STATUS_CANCELLED, "Wrong iostatus %x\n", U(iosb).Status);
-    ok(WaitForSingleObject(hEvent, 0) == 0, "hEvent not signaled\n");
+        ok(U(iosb).Status == STATUS_CANCELLED, "Wrong iostatus %x\n", U(iosb).Status);
+        ok(WaitForSingleObject(hEvent, 0) == 0, "hEvent not signaled\n");
+
+        CloseHandle(hPipe);
+    }
+    else
+        win_skip("NtCancelIoFileEx not available\n");
 
     CloseHandle(hEvent);
-    CloseHandle(hPipe);
 }
 
 static void _check_pipe_handle_state(int line, HANDLE handle, ULONG read, ULONG completion)
@@ -1094,6 +1100,8 @@
         CloseHandle( read );
         CloseHandle( write );
     }
+    else
+        win_skip("NtCancelIoFileEx not available\n");
 
     CloseHandle(event);
 }
