www.delorie.com/archives/browse.cgi | search |
DMARC-Filter: | OpenDMARC Filter v1.4.2 delorie.com 514BHfxH1390095 |
Authentication-Results: | delorie.com; dmarc=pass (p=none dis=none) header.from=cygwin.com |
Authentication-Results: | delorie.com; spf=pass smtp.mailfrom=cygwin.com |
DKIM-Filter: | OpenDKIM Filter v2.11.0 delorie.com 514BHfxH1390095 |
Authentication-Results: | delorie.com; |
dkim=pass (1024-bit key, unprotected) header.d=cygwin.com header.i=@cygwin.com header.a=rsa-sha256 header.s=default header.b=ZEFklhGH | |
X-Recipient: | archive-cygwin AT delorie DOT com |
DKIM-Filter: | OpenDKIM Filter v2.11.0 sourceware.org 9A2BB3858C33 |
DKIM-Signature: | v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com; |
s=default; t=1738667860; | |
bh=CHRMOZKvp+YY6ivQWvi0c/TldvBM64s4NQdyyKJlLec=; | |
h=Date:To:Subject:References:In-Reply-To:List-Id:List-Unsubscribe: | |
List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: | |
From; | |
b=ZEFklhGHmqO6RabIe2Vc5Z/q4U9QtDAyzN4zY338A1XnscRhGCjr8F3P1nIfiZyue | |
ijD9dyFWwDZRcjDiE0hOYN/NFmlKv7urCPHYXS5ZTvL1xlEjzSm0ijJHCNkIt708d0 | |
qp/n2CM9slY/86YureRUsPxdXv2CzW6wds9DrAvc= | |
X-Original-To: | cygwin AT cygwin DOT com |
Delivered-To: | cygwin AT cygwin DOT com |
DKIM-Filter: | OpenDKIM Filter v2.11.0 sourceware.org 0A3C8385841F |
Date: | Tue, 4 Feb 2025 12:17:12 +0100 |
To: | cygwin AT cygwin DOT com |
Subject: | Re: [Ms-nfs41-client-devel] Fwd: Implementing mkfifo, mknod support |
with NFS_SPECFILE_FIFO and NFS_SPECFILE_SOCK? | |
Message-ID: | <Z6H3OH_AF6S1CRGm@calimero.vinschen.de> |
Mail-Followup-To: | cygwin AT cygwin DOT com |
References: | <CALXu0UdpgPgoZ_Vzwvh1DgYmgdKfs+k=NaLPm0JK3rAZANUEnA AT mail DOT gmail DOT com> |
<CALXu0Ucd9fYhWRHZ_3a+JYjgV4_Q9cv-v_kCODcdicTEpw6Krw AT mail DOT gmail DOT com> | |
<CAKAoaQm0C4YE+OkPMoUyn8TRj4D9F9tVGO-j7tg4m64Wa5MO5Q AT mail DOT gmail DOT com> | |
<Z6H1F8KXVmQytZrM AT calimero DOT vinschen DOT de> | |
MIME-Version: | 1.0 |
In-Reply-To: | <Z6H1F8KXVmQytZrM@calimero.vinschen.de> |
X-BeenThere: | cygwin AT cygwin DOT com |
X-Mailman-Version: | 2.1.30 |
List-Id: | General Cygwin discussions and problem reports <cygwin.cygwin.com> |
List-Unsubscribe: | <https://cygwin.com/mailman/options/cygwin>, |
<mailto:cygwin-request AT cygwin DOT com?subject=unsubscribe> | |
List-Archive: | <https://cygwin.com/pipermail/cygwin/> |
List-Post: | <mailto:cygwin AT cygwin DOT com> |
List-Help: | <mailto:cygwin-request AT cygwin DOT com?subject=help> |
List-Subscribe: | <https://cygwin.com/mailman/listinfo/cygwin>, |
<mailto:cygwin-request AT cygwin DOT com?subject=subscribe> | |
From: | Corinna Vinschen via Cygwin <cygwin AT cygwin DOT com> |
Reply-To: | cygwin AT cygwin DOT com |
Cc: | Corinna Vinschen <corinna-cygwin AT cygwin DOT com> |
Errors-To: | cygwin-bounces~archive-cygwin=delorie DOT com AT cygwin DOT com |
Sender: | "Cygwin" <cygwin-bounces~archive-cygwin=delorie DOT com AT cygwin DOT com> |
On Feb 4 12:08, Corinna Vinschen via Cygwin wrote: > $ cat > mk-dev-nfs.c <<EOF > [...] Copy/Paste error, try this one: #include <stdio.h> #include <windows.h> #include <winternl.h> typedef struct { DWORD ReparseTag; WORD ReparseDataLength; WORD Reserved; struct { BYTE DataBuffer[1]; } GenericReparseBuffer; struct { ULONGLONG Type; union { struct { ULONG Major; ULONG Minor; } Device; WCHAR LnkBuffer[1]; }; } NfsReparseBuffer; } MY_REPARSE_DATA_BUFFER, *MY_PREPARSE_DATA_BUFFER; #define NFS_SPECFILE_LNK 0x00000000014B4E4CL #define NFS_SPECFILE_CHR 0x0000000000524843L #define NFS_SPECFILE_BLK 0x00000000004B4C42L #define NFS_SPECFILE_FIFO 0x000000004F464946L #define NFS_SPECFILE_SOCK 0x000000004B434F53L int main (int argc, char **argv) { HANDLE fh; char buf[65536]; DWORD size_ret; MY_PREPARSE_DATA_BUFFER rp; if (argc < 3) { fprintf (stderr, "usage: %s <name> b|c|f|s [major] [minor]\n", argv[0]); return 1; } fh = CreateFile (argv[1], GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT, NULL); if (fh == INVALID_HANDLE_VALUE) { fprintf (stderr, "CreateFile: %d\n", GetLastError ()); return 1; } rp = (MY_PREPARSE_DATA_BUFFER) buf; rp->ReparseTag = IO_REPARSE_TAG_NFS; rp->ReparseDataLength = sizeof (ULONGLONG); switch (argv[2][0]) { case 'b': case 'c': if (argc != 5) { fprintf (stderr, "usage: %s <name> b|c|f|s [major] [minor]\n", argv[0]); return 1; } rp->ReparseDataLength += 2 * sizeof (ULONG); rp->NfsReparseBuffer.Type = argv[2][0] == 'b' ? NFS_SPECFILE_BLK : NFS_SPECFILE_CHR; rp->NfsReparseBuffer.Device.Major = strtoul (argv[3], NULL, 0); rp->NfsReparseBuffer.Device.Minor = strtoul (argv[4], NULL, 0); break; case 'f': rp->NfsReparseBuffer.Type = NFS_SPECFILE_FIFO; break; case 's': rp->NfsReparseBuffer.Type = NFS_SPECFILE_SOCK; break; } if (! DeviceIoControl (fh, FSCTL_SET_REPARSE_POINT, (LPVOID) buf, REPARSE_GUID_DATA_BUFFER_HEADER_SIZE + rp->ReparseDataLength, NULL, 0, &size_ret, NULL)) { fprintf (stderr, "DeviceIoControl: %d\n", GetLastError ()); CloseHandle (fh); DeleteFile (argv[1]); return 1; } CloseHandle (fh); return 0; } -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |