===EDIT: Nevermind, this is due to a bug in the vulkan library loader.======
On Driver 368.22 (Windows 10 64bit), my code can successfully create an instance, enumerate physical devices, create device and surface, but when I call vkGetPhysicalDeviceSurfaceFormatsKHR, it crashes in the driver (Access Violation).
surface = instance.createWin32SurfaceKHR(surfaceCreateInfo);
returns success with an seemly valid handle to a surface object, but use querying anything on this surface (e.g. calling vkGetPhysicalDeviceSurfaceFormatsKHR) results an access violation error. Digging into the disassembly shows that some internal fields of the surface object (rcx +40h, +50h) is zero and the driver is trying to dereferencing those fields.
If there is any mistake in my code creating the surface or initializing the window, the driver should at least return an error code rather than returns success with an valid surface object.