+/* serialized process data block, used by __PdxSpawnPosixProcess() and __PdxExecThunk().
+ The layout of buffers inside the Buffer byte array is as following:
+
+ ArgVect[0] + null byte
+ ArgVect[1] + null byte
+ ...
+ ArgVect[ArgCount - 1] + null byte
+ Environment[0] + null byte
+ Environment[1] + null byte
+ ...
+ Environment[n - 1] + null byte (NOTE: the value of n is stored in ProcessData.Environment)
+ CurDir.Buffer
+ RootPath.Buffer
+ FdTable.Descriptors[0]
+ FdTable.Descriptors[1]
+ ...
+ FdTable.Descriptors[FdTable.AllocatedDescriptors - 1]
+ FdTable.Descriptors[x].ExtraData
+ FdTable.Descriptors[y].ExtraData
+ ...
+ padding for page boundary alignment
+ */
+typedef struct __tagPDX_SERIALIZED_PDATA
+{
+ __PDX_PDATA ProcessData;
+ ULONG AllocSize;
+ BYTE Buffer[1];
+} __PDX_SERIALIZED_PDATA, *__PPDX_SERIALIZED_PDATA;
+