diff --git a/src/internal/ptycon_driver_impl.h b/src/internal/ptycon_driver_impl.h
index ee2e5ca..0acb69d 100644
--- a/src/internal/ptycon_driver_impl.h
+++ b/src/internal/ptycon_driver_impl.h
@@ -43,7 +43,15 @@ struct ptyc_loop_ctx {
 	int32_t			fwinsize;
 };
 
+struct ptyc_client_ctx {
+	void *			hprocess;
+	void *			hthread;
+	nt_cid			cid;
+	nt_pty_client_info	clinfo;
+};
+
 struct ptyc_driver_ctx_impl {
+	struct ptyc_client_ctx	clctx;
 	struct ptyc_term_ctx	tctx;
 	struct ptyc_loop_ctx	lctx;
 	struct ptyc_common_ctx	cctx;
diff --git a/src/internal/ptycon_ioctl_impl.h b/src/internal/ptycon_ioctl_impl.h
index dacd689..a3d902d 100644
--- a/src/internal/ptycon_ioctl_impl.h
+++ b/src/internal/ptycon_ioctl_impl.h
@@ -19,4 +19,52 @@ static int32_t ptyc_grant(nt_pty * hptm)
 		&ctlinfo,sizeof(ctlinfo));
 }
 
+static int32_t ptyc_set_client_info(
+	nt_pty *		hpty,
+	nt_pty_client_info *	clinfo)
+{
+	int32_t			status;
+	nt_iosb			iosb;
+	nt_large_integer	ticks;
+	nt_large_integer	freq;
+	nt_pty_client_info	ptyinfo;
+
+	if ((status = ntapi->zw_query_performance_counter(
+			&ticks,&freq)))
+		return status;
+
+	ptyinfo.any[0] = (ticks.ulow << 19) | (ticks.ulow >> 13);
+
+	if ((status = ntapi->zw_query_performance_counter(
+			&ticks,&freq)))
+		return status;
+
+	ptyinfo.any[1] = (ticks.ulow << 15) | (ticks.ulow >> 17);
+
+	if ((status = ntapi->zw_query_performance_counter(
+			&ticks,&freq)))
+		return status;
+
+	ptyinfo.any[1] = (ticks.ulow << 11) | (ticks.ulow >> 21);
+
+	if ((status = ntapi->zw_query_performance_counter(
+			&ticks,&freq)))
+		return status;
+
+	ptyinfo.any[1] = (ticks.ulow << 17) | (ticks.ulow >> 15);
+
+	if ((status = ntapi->pty_set(
+			hpty,&iosb,
+			&ptyinfo,sizeof(ptyinfo),
+			NT_PTY_CLIENT_INFORMATION)))
+		return status;
+
+	clinfo->any[0] = ptyinfo.any[0];
+	clinfo->any[1] = ptyinfo.any[1];
+	clinfo->any[2] = ptyinfo.any[2];
+	clinfo->any[3] = ptyinfo.any[3];
+
+	return NT_STATUS_SUCCESS;
+}
+
 #endif
diff --git a/src/pty/ptyc_pty_ctx.c b/src/pty/ptyc_pty_ctx.c
index f0e416d..99d8c69 100644
--- a/src/pty/ptyc_pty_ctx.c
+++ b/src/pty/ptyc_pty_ctx.c
@@ -200,6 +200,10 @@ int ptyc_alloc_pty(struct ptyc_driver_ctx * dctx)
 		return ptyc_set_status(
 			dctx,status);
 
+	if ((status = ptyc_set_client_info(cctx->hpts,&ictx->clctx.clinfo)))
+		return ptyc_set_status(
+			dctx,status);
+
 	if (cctx->drvflags & PTYC_DRIVER_DBG_RAW)
 		if ((status = ptyc_make_raw(cctx->hpts)))
 			return ptyc_set_status(