aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2019-07-19 06:29:33 +0000
committerJason A. Donenfeld <Jason@zx2c4.com>2019-07-19 06:31:26 +0000
commit970e22d8e440d4328524df0c1863ee6ae938f867 (patch)
treedfc087239857638ef3379c373976fa2604b314e8
parentRequire the usual SDDL_DEVOBJ_SYS_ALL permissions (diff)
downloadwintun-970e22d8e440d4328524df0c1863ee6ae938f867.tar.xz
wintun-970e22d8e440d4328524df0c1863ee6ae938f867.zip
Use more specific IOCTL code
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
-rw-r--r--README.md2
-rw-r--r--wintun.c3
2 files changed, 2 insertions, 3 deletions
diff --git a/README.md b/README.md
index d1e5de8..a39fff4 100644
--- a/README.md
+++ b/README.md
@@ -148,7 +148,7 @@ typedef struct _TUN_REGISTER_RINGS
- `Receive.TailMoved`: A handle to an [`auto-reset event`](https://docs.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-createeventa) created by the client that the client will signal when it changes `Receive.Ring->Tail` and `Receive.Ring->Alertable` is non-zero.
-With events created, send and receive rings allocated, and registration struct populated, [`DeviceIoControl`](https://docs.microsoft.com/en-us/windows/win32/api/ioapiset/nf-ioapiset-deviceiocontrol)(`TUN_IOCTL_REGISTER_RINGS`: 0x22E000) with pointer and size of descriptor struct specified as `lpInBuffer` and `nInBufferSize` parameters. You may call `TUN_IOCTL_REGISTER_RINGS` on one handle only.
+With events created, send and receive rings allocated, and registration struct populated, [`DeviceIoControl`](https://docs.microsoft.com/en-us/windows/win32/api/ioapiset/nf-ioapiset-deviceiocontrol)(`TUN_IOCTL_REGISTER_RINGS`: 0xca6ce5c0) with pointer and size of descriptor struct specified as `lpInBuffer` and `nInBufferSize` parameters. You may call `TUN_IOCTL_REGISTER_RINGS` on one handle only.
### Writing to and from rings
diff --git a/wintun.c b/wintun.c
index 1f8a50b..1d663b7 100644
--- a/wintun.c
+++ b/wintun.c
@@ -101,8 +101,7 @@ typedef struct _TUN_REGISTER_RINGS
/* Register rings hosted by the client
* The lpInBuffer and nInBufferSize parameters of DeviceIoControl() must point to an TUN_REGISTER_RINGS struct.
* Client must wait for this IOCTL to finish before adding packets to the ring. */
-#define TUN_IOCTL_REGISTER_RINGS CTL_CODE(FILE_DEVICE_UNKNOWN, 0x800, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
-/* TODO: Select and specify OEM-specific device type instead of FILE_DEVICE_UNKNOWN. */
+#define TUN_IOCTL_REGISTER_RINGS CTL_CODE(51820, 0x970, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
typedef enum _TUN_FLAGS
{