diff --git a/graphic/graphic_2d/native_window/external_window.h b/graphic/graphic_2d/native_window/external_window.h
index f851a3fee9bbd0af38687a9459e741223257a671..30112812dba526f399f30cf8c61c22c283d31419 100644
--- a/graphic/graphic_2d/native_window/external_window.h
+++ b/graphic/graphic_2d/native_window/external_window.h
@@ -45,6 +45,14 @@ extern "C" {
#endif
typedef struct OH_NativeBuffer OH_NativeBuffer;
+/**
+ * @brief Defines the ipc parcel.
+ *
+ * @since 12
+ * @version 1.0
+ */
+typedef struct OHIPCParcel OHIPCParcel;
+
/**
* @brief native window.
* @since 8
@@ -659,6 +667,32 @@ int32_t OH_NativeWindow_NativeWindowSetScalingModeV2(OHNativeWindow *window, OHS
*/
void OH_NativeWindow_SetBufferHold(OHNativeWindow *window);
+/**
+ * @brief Write an OHNativeWindow to an OHIPCParcel.
+ *
+ * @syscap SystemCapability.Graphic.Graphic2D.NativeWindow
+ * @param window Indicates the pointer to an OHNativeWindow instance.
+ * @param parcel Indicates the pointer to an OHIPCParcel instance.
+ * @return 0 - Success.
+ * 40001000 - parcel is NULL or window is NULL.
+ * @since 12
+ * @version 1.0
+ */
+int32_t OH_NativeWindow_WriteToParcel(OHNativeWindow *window, OHIPCParcel *parcel);
+
+/**
+ * @brief Read an OHNativeWindow from an OHIPCParcel.
+ *
+ * @syscap SystemCapability.Graphic.Graphic2D.NativeWindow
+ * @param parcel Indicates the pointer to an OHIPCParcel instance.
+ * @param window Indicates the pointer to an OHNativeWindow instance.
+ * @return 0 - Success.
+ * 40001000 - parcel is NULL or parcel does not contain the window.
+ * @since 12
+ * @version 1.0
+ */
+int32_t OH_NativeWindow_ReadFromParcel(OHIPCParcel *parcel, OHNativeWindow **window);
+
/**
* @brief Get the last flushed OHNativeWindowBuffer from an OHNativeWindow instance.
*
diff --git a/graphic/graphic_2d/native_window/libnative_window.ndk.json b/graphic/graphic_2d/native_window/libnative_window.ndk.json
index 5707571dabdfb2206e27af8c288131ac6a4f1f5e..7b34d72999671eb821622a14ee96eb8f558dcacc 100644
--- a/graphic/graphic_2d/native_window/libnative_window.ndk.json
+++ b/graphic/graphic_2d/native_window/libnative_window.ndk.json
@@ -26,5 +26,13 @@
{ "name": "OH_NativeWindow_NativeWindowAttachBuffer" },
{ "name": "OH_NativeWindow_NativeWindowDetachBuffer" },
{ "name": "OH_NativeWindow_SetBufferHold" },
+ {
+ "first_introduced": "12",
+ "name": "OH_NativeWindow_WriteToParcel"
+ },
+ {
+ "first_introduced": "12",
+ "name": "OH_NativeWindow_ReadFromParcel"
+ },
{ "name": "OH_NativeWindow_GetLastFlushedBufferV2" }
]
\ No newline at end of file