static byte[] IssueClusterResourceControl(SafeHResource hResource,
                                                  ClusterResourceControlCode code)
        {
            uint cb = 0;
            uint ret = SafeNativeMethods.ClusterResourceControl(hResource,
                                                                IntPtr.Zero,
                                                                code,
                                                                IntPtr.Zero,
                                                                0,
                                                                null,
                                                                0,
                                                                ref cb);

            if (ret == SafeNativeMethods.ERROR_SUCCESS || ret == SafeNativeMethods.ERROR_MORE_DATA)
            {
                byte[] buffer = new byte[cb];
                ret = SafeNativeMethods.ClusterResourceControl(hResource,
                                                               IntPtr.Zero,
                                                               code,
                                                               IntPtr.Zero,
                                                               0,
                                                               buffer,
                                                               cb,
                                                               ref cb);

                if (ret == SafeNativeMethods.ERROR_SUCCESS)
                {
                    return buffer;
                }
            }

            return null;
        }