+ *(u16*)(buf + 6) = 0;
+
+ /* Set the reparse data on the open file using the
+ * FSCTL_SET_REPARSE_POINT ioctl.
+ *
+ * There are contradictions in Microsoft's documentation for this:
+ *
+ * "If hDevice was opened without specifying FILE_FLAG_OVERLAPPED,
+ * lpOverlapped is ignored."
+ *
+ * --- So setting lpOverlapped to NULL is okay since it's ignored.
+ *
+ * "If lpOverlapped is NULL, lpBytesReturned cannot be NULL. Even when an
+ * operation returns no output data and lpOutBuffer is NULL,
+ * DeviceIoControl makes use of lpBytesReturned. After such an
+ * operation, the value of lpBytesReturned is meaningless."
+ *
+ * --- So lpOverlapped not really ignored, as it affects another
+ * parameter. This is the actual behavior: lpBytesReturned must be
+ * specified, even though lpBytesReturned is documented as:
+ *
+ * "Not used with this operation; set to NULL."
+ */
+ DWORD bytesReturned;