<feed xmlns='http://www.w3.org/2005/Atom'>
<title>wireguard-nt/api, branch master</title>
<subtitle>WireGuard implementation for NT kernel</subtitle>
<id>https://git.zx2c4.com/wireguard-nt/atom/api?h=master</id>
<link rel='self' href='https://git.zx2c4.com/wireguard-nt/atom/api?h=master'/>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-nt/'/>
<updated>2026-07-20T13:39:58Z</updated>
<entry>
<title>api: rundll32: manage replies from worker process better</title>
<updated>2026-07-20T13:39:58Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2026-05-14T07:21:07Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-nt/commit/?id=55669c7a1031f82b706f5e73cd5d726a08a5688c'/>
<id>urn:sha1:55669c7a1031f82b706f5e73cd5d726a08a5688c</id>
<content type='text'>
CommandLineToArgvW("") returns the calling executable's path with
Argc=1, so a silent worker crash would be parsed as a path through
wcstoul, yielding either bogus error codes or, on UNC paths, a
silent ERROR_SUCCESS. Also deal with a zero sized response buffer, and
the case when the response fills the buffer precisely.

Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
<entry>
<title>api: adapter: pin the module across background orphan cleanup</title>
<updated>2026-07-14T14:31:53Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2026-07-13T21:43:44Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-nt/commit/?id=c04fced8680812c232364e03421cc8fa128f27c1'/>
<id>urn:sha1:c04fced8680812c232364e03421cc8fa128f27c1</id>
<content type='text'>
AdapterCleanupOrphanedDevices(TRUE) is called from DllMain's
DLL_PROCESS_ATTACH and queues CleanupOrphanedDevices onto a thread-pool
thread, where it runs long SetupAPI/CM operations and blocks on the
namespace mutexes. Pin the module before this happens, so that it can't
be unloaded while working.

Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
<entry>
<title>api: cleanup phantom devices added by windows updates</title>
<updated>2026-07-14T14:26:52Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2026-05-11T21:19:49Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-nt/commit/?id=b0d305a1865c9b23fa677d9ddeb564a60d315973'/>
<id>urn:sha1:b0d305a1865c9b23fa677d9ddeb564a60d315973</id>
<content type='text'>
When Windows does major updates, it walks the driver store and manually
installs drivers into the ROOT namespace. This is a problem since we use
the SWD namespace. Since these nodes are never accounted for, they live
on and prevent the driver from ever being unloaded or upgraded.

Fix this by walking through the ROOT namespace and removing these
phantom drivers.

Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
<entry>
<title>api: rundll32: fix inverted _Return_type_success_ on ProcessStdout</title>
<updated>2026-04-16T10:33:30Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2026-04-16T01:22:01Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-nt/commit/?id=63bc534afdc1e663c41d2fb3f0a1ed67278d4d70'/>
<id>urn:sha1:63bc534afdc1e663c41d2fb3f0a1ed67278d4d70</id>
<content type='text'>
Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
<entry>
<title>api: check CommandLineToArgvW return for NULL</title>
<updated>2026-04-16T10:33:11Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2026-04-16T01:21:42Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-nt/commit/?id=1e0cd31a8c7bc181fb72612bf7294d2430d940d8'/>
<id>urn:sha1:1e0cd31a8c7bc181fb72612bf7294d2430d940d8</id>
<content type='text'>
Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
<entry>
<title>api: logger: fix format string argument order ilon OOM</title>
<updated>2026-04-16T10:32:46Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2026-04-16T01:19:53Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-nt/commit/?id=2e032ad1a6a21f33a511a210d24e3e7805d517da'/>
<id>urn:sha1:2e032ad1a6a21f33a511a210d24e3e7805d517da</id>
<content type='text'>
Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
<entry>
<title>driver: enable /std:clatest and use typeof</title>
<updated>2026-04-14T08:26:48Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2026-04-12T16:26:06Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-nt/commit/?id=3312f666040a88785ae2dc319f02c783759bd9ef'/>
<id>urn:sha1:3312f666040a88785ae2dc319f02c783759bd9ef</id>
<content type='text'>
Use C23 typeof to eliminate redundant type parameters from the RCU
macros.

Also, drop mention of hoping to use alignas in TODO.md. It only goes on
members of structs, not the struct type itself, which I find
syntactically annoying, and it doesn't really confer any additional real
benefits.

Moving to C23 means that we must use __VA_OPT__.

Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
<entry>
<title>api: adapter: don't set DriverRequired on stub device</title>
<updated>2026-04-14T08:26:02Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2026-04-13T20:29:44Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-nt/commit/?id=c89926e804c0066b9d55c2dcc0c417714e4d9f61'/>
<id>urn:sha1:c89926e804c0066b9d55c2dcc0c417714e4d9f61</id>
<content type='text'>
The stub device only exists momentarily to create the software registry
key for SuggestedInstanceId. Setting SWDeviceCapabilitiesDriverRequired
with empty hardware IDs violates the SwDeviceCreate API contract and
causes PnP to needlessly search for a driver for this transient device.

Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
<entry>
<title>api: adapter: capture LastError from failed allocation</title>
<updated>2026-04-14T08:26:02Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2026-04-11T22:27:18Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-nt/commit/?id=1cf18d81658d106584cd24e2b52b9bf7defa2978'/>
<id>urn:sha1:1cf18d81658d106584cd24e2b52b9bf7defa2978</id>
<content type='text'>
Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
<entry>
<title>api: adapter: take into account QueueUserWorkItem failing</title>
<updated>2026-04-14T08:26:02Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2026-04-11T18:44:47Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-nt/commit/?id=4bb2382ca937400f478872c8617fe40b72613b2a'/>
<id>urn:sha1:4bb2382ca937400f478872c8617fe40b72613b2a</id>
<content type='text'>
Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;
</content>
</entry>
</feed>
